

freeslot(
	"MT_FLAREBALL",
	"S_FLRBL1",
	"S_FLRBL2",
	"S_FLRBL3",
	"S_FLRBL4",
	"S_FLRBL5",
	"S_FLRBL6",
	"S_FLRBL7",
	"S_FLRBL8",
	"MT_SMOKEY",
	"S_SMOKEY1",
	"S_SMOKEY2",
	"MT_BOILSFX",
	"S_BOIL1",
	"S_BOIL2",
	"MT_RINGLOCK",
	"SPR_RNGL",
	"S_RNGLK",
	"S_RNGLK2",
	"S_RNGLK3",
	"S_RNGLK4",
	"MT_WHITEWARP",
	"S_WHTWP1",
	"S_WHTWP2",
	"MT_CARDGAME",
	"S_CARDGM1",
	"S_CARDGM2",
	"S_CARDGM3",
	"S_CARDGM4",
	"S_CARDGM5",
	"SPR_CARD",
	"MT_WINDGUST",
	"S_WNDGT1",
	"S_WNDGT2",
	"S_WNDGT3",
	"S_WNDGT4",
	"S_WNDGT5",
	"S_WNDGT6",
	"S_WNDGT7",
	"S_WNDGT8",
	"MT_BAPHOMORE",
	"S_BAPH1",
	"S_BAPH2",
	"SPR_BAPH",
	"MT_LADYFORTUNE",
	"SPR_LADY",
	"S_LADY1",
	"S_LADY2",
	"S_LADY3",
	"S_LADY4",
	"S_LADY5",
	"MT_CAVE_PAINTING1",
	"S_CAVEPAINT1",
	"SPR_WLPN",
	"MT_CAVE_PAINTING2",
	"S_CAVEPAINT2",
	"MT_CAVE_PAINTING3",
	"S_CAVEPAINT3",
	"MT_CAVE_PAINTING4",
	"S_CAVEPAINT4",
	"MT_CAVE_PAINTING5",
	"S_CAVEPAINT5",
	"MT_CAVE_PAINTING6",
	"S_CAVEPAINT6",
	"MT_CAVE_PAINTING7",
	"S_CAVEPAINT7",
	"MT_CAVE_PAINTING8",
	"S_CAVEPAINT8",
	"MT_CAVE_PAINTING9",
	"S_CAVEPAINT9",
	"MT_CAVE_SIGN1",
	"S_CAVESIGN1",
	"SPR_FOSN",
	"MT_CAVE_SIGN2",
	"S_CAVESIGN2",
	"MT_CAVE_SIGN3",
	"S_CAVESIGN3",
	"MT_CAVE_SIGN4",
	"S_CAVESIGN4",
	"MT_CAVE_SIGN5",
	"S_CAVESIGN5",
	"MT_CAVE_SIGN6",
	"S_CAVESIGN6",
	"MT_CAVE_SIGN7",
	"S_CAVESIGN7",
	"MT_CAVE_SIGN8",
	"S_CAVESIGN8",
	"MT_CAVE_SIGN9",
	"S_CAVESIGN9",
	"MT_CAVE_SIGN10",
	"S_CAVESIGN10",
	"MT_CAVE_SIGN11",
	"S_CAVESIGN11",
	"MT_CAVE_SIGN12",
	"S_CAVESIGN12",
	"MT_CAVE_SIGN13",
	"S_CAVESIGN13",
	"MT_CAVE_SIGN14",
	"S_CAVESIGN14",
	"MT_CAVE_SIGN15",
	"S_CAVESIGN15",
	"MT_CAVE_SIGN16",
	"S_CAVESIGN16",
	"MT_CAVE_SIGN17",
	"S_CAVESIGN17",
	"MT_QUIZGAME",
	"S_QUIZ1",
	"S_QUIZ2",
	"S_QUIZ3",
	"MT_QUIZSPOTA",
	"S_QSPOTA",
	"SPR_QSPT",
	"S_QSPOTB",
	"S_QSPOTC",
	"S_QSPOTD",
	"MT_CASINOLIGHTREE",
	"S_CASINOLIGHTREE1",
	"SPR_CVTR",
	"MT_BARRIERNUMZERO",
	"S_BARRIERNUMZERO",
	"SPR_BNUM",
	"MT_BARRIERNUMONE",
	"S_BARRIERNUMONE",
	"MT_BARRIERNUMTWO",
	"S_BARRIERNUMTWO",
	"MT_BARRIERNUMTHREE",
	"S_BARRIERNUMTHREE",
	"MT_BARRIERNUMFOUR",
	"S_BARRIERNUMFOUR",
	"MT_BARRIERNUMFIVE",
	"S_BARRIERNUMFIVE",
	"MT_BARRIERNUMSIX",
	"S_BARRIERNUMSIX",
	"MT_BARRIERNUMSEVEN",
	"S_BARRIERNUMSEVEN",
	"MT_BARRIERNUMEIGHT",
	"S_BARRIERNUMEIGHT",
	"MT_BARRIERNUMNINE",
	"S_BARRIERNUMNINE"
)

addHook("MapLoad", do
	for player in players.iterate
		player.addring = 0
		player.carddrawone = 0
		player.carddrawtwo = 0
		player.carddrawthree = 0
		player.cardstate = 0
		player.carddrawreward = 0
		player.ladyrings = 0
		player.ladyringscooldown = 0
		player.questiontimer = 0
		player.questionnum = 0
		player.questionsOLDC = 0
		player.questionsOLDC_lump = 0
		player.questionready = 0
		player.lastmarescore = 0
		player.quizsong = 0
	end
end
)

addHook("PlayerCanDamage",function(player,mobj)
	for player in players.iterate
		if gamemap != 779 --showmap
		return end
		
		if mobj.type == MT_RING
		and (player.mo.z < mobj.z + mobj.height and player.mo.z > mobj.z - player.mo.height)
			if player.maxlink > 0
				player.addring = 1
			end
		end
	end
end,MT_PLAYER
)


--cardstate is the card number youre on 

--carddrawone is the first card
--carddrawtwo is the second card
--carddrawthree is the third card

--carddrawreward is the match you have
--1, Two match
--2, All match
--3, Straight match

addHook("PlayerThink", function(player)
	if gamemap != 779 --showmap
	return end

	if player.mo.hudflash == nil
		player.mo.hudflash = 0
		player.mo.colorflash = 0
	end
	if player.mo.hudflash > 17
		player.mo.hudflash = 0
	end
	if player.mo.colorflash > 60
		player.mo.colorflash = 0
	end
	player.mo.hudflash = $ + 1
	player.mo.colorflash = $ + 1	
	
	
	if (player.marescore == 1 or player.maxlink == 1)
	and player.powers[pw_invulnerability] == 0
	and player.powers[pw_sneakers] == 0
	and player.powers[pw_super] == 0
		S_ChangeMusic("FOZ")	
	end	

	if player.marescore > 0
		player.marescore = $ - 1
	end
	if player.maxlink > 0
		player.maxlink = $ - 1
	end
-----------------				
	if player.addring == 1
		player.rings = $ + 1
		player.addring = 0
	end
	
	if player.leveleffects == true
		P_LinedefExecute(150, player.mo) --Activates level special effects
	end
	P_LinedefExecute(404, player.mo) --Used for the 9999 ring secret, color square game,
end
)

addHook("MobjThinker", function(mobj,player)
	if gamemap != 779 --showmap
	return end
	if not (mobj and mobj.valid)
		return end	
	for player in players.iterate
		if mobj.y > -12000*FRACUNIT
			P_SetScale(mobj, 3*FRACUNIT)
		end
		if mobj.state == S_GOLDBOX_OFF1
			P_LinedefExecute(735, player.mo, nil)
		end
	end
end,MT_EGGMAN_GOLDBOX
)



local function monitor_shuffle(mobj)
	if gamemap != 779 --showmap
	return end
	if mobj.angle > 0
		if mobj.state != S_BOX_POP1
		and mobj.state != S_BOX_POP2
			if P_RandomChance(FRACUNIT/7)
				mobj.type = MT_FLAMEAURA_BOX
				mobj.state = S_FLAMEAURA_BOX
			end
			if P_RandomChance(FRACUNIT/7)
				mobj.type = MT_RING_BOX
				mobj.state = S_RING_BOX
			end
			if P_RandomChance(FRACUNIT/7)
				mobj.type = MT_SCORE1K_BOX
				mobj.state = S_SCORE1K_BOX
			end
			if P_RandomChance(FRACUNIT/7)
				mobj.type = MT_SCORE10K_BOX
				mobj.state = S_SCORE10K_BOX
			end
			if P_RandomChance(FRACUNIT/7)
				mobj.type = MT_THUNDERCOIN_BOX
				mobj.state = S_THUNDERCOIN_BOX
			end
			if P_RandomChance(FRACUNIT/7)
				mobj.type = MT_ATTRACT_BOX
				mobj.state = S_ATTRACT_BOX
			end
			if P_RandomChance(FRACUNIT/7)
				mobj.type = MT_PITY_BOX
				mobj.state = S_PITY_BOX
			end
		end
	end
end
addHook("MobjThinker", monitor_shuffle,MT_FLAMEAURA_BOX)
addHook("MobjThinker", monitor_shuffle,MT_RING_BOX)
addHook("MobjThinker", monitor_shuffle,MT_SCORE1K_BOX)
addHook("MobjThinker", monitor_shuffle,MT_SCORE10K_BOX)
addHook("MobjThinker", monitor_shuffle,MT_THUNDERCOIN_BOX)
addHook("MobjThinker", monitor_shuffle,MT_ATTRACT_BOX)
addHook("MobjThinker", monitor_shuffle,MT_PITY_BOX)



local function ScoreForRings(line, mo)
	mo.momz = P_AproxDistance(line.dx, line.dy)/4
	if mo.player.score >= 100
		mo.player.rings = $ + 1
		mo.player.score = $ - 100
		P_LinedefExecute(139, mo, nil)
	end
end

addHook("LinedefExecute", ScoreForRings, "DECSCORE")



local function RingsForExit(line, mo)
	if mo.player.ladyringscooldown == nil
		mo.player.ladyringscooldown = 0
	end	
	if mo.player.ladyrings == nil
		mo.player.ladyrings = 0
	end	
	
	if mo.player.ladyringscooldown > 0
		mo.player.ladyringscooldown = $ - 1
	return end	


	
	if mo.player.rings > 0
	and mo.player.ladyrings < 500
	and mo.player.ladyringscooldown == 0
		mo.player.rings = $ - 1
		P_LinedefExecute(141, mo, nil)
		mo.player.ladyrings = $ + 1
		if mo.player.ladyrings == 150
			mo.player.ladyringscooldown = 180
			P_LinedefExecute(679, mo, nil)
		end
		if mo.player.ladyrings == 350
			mo.player.ladyringscooldown = 180
			P_LinedefExecute(692, mo, nil)
		end
		if mo.player.ladyrings == 500
			mo.player.ladyringscooldown = 180
			P_LinedefExecute(695, mo, nil)
		end
	end
end

addHook("LinedefExecute", RingsForExit, "DECEXIT")


local function HalfOffDeal(line, mo)
	mo.momz = P_AproxDistance(line.dx, line.dy)/4
	if mo.player.marescore == 0
		mo.player.marescore = (120)*35
		--S_ChangeMusic("HALFOF")
		S_ChangeMusic("DBLRNG")
		
	end
end

addHook("LinedefExecute", HalfOffDeal, "HALFOFF")


local function TileBumper5(line, mo)
	mo.momz = P_AproxDistance(line.dx, line.dy)/4
	if mo.z > 3000*FRACUNIT
		P_SetObjectMomZ(mo,10*FRACUNIT)
		mo.player.rings = $ + 5
		P_NukeEnemies(mo,mo,1*FRACUNIT)
	end
end

addHook("LinedefExecute", TileBumper5, "TILBMP5")

local function TileBumper10(line, mo)
	mo.momz = P_AproxDistance(line.dx, line.dy)/4
	if mo.z > 3000*FRACUNIT
		P_SetObjectMomZ(mo,10*FRACUNIT)
		mo.player.rings = $ + 10
		P_NukeEnemies(mo,mo,1*FRACUNIT)
	end
end

addHook("LinedefExecute", TileBumper10, "TILBMP10")

local function TileBumper15(line, mo)
	mo.momz = P_AproxDistance(line.dx, line.dy)/4
	if mo.z > 3000*FRACUNIT
		P_SetObjectMomZ(mo,10*FRACUNIT)
		mo.player.rings = $ + 15
		P_NukeEnemies(mo,mo,1*FRACUNIT)
	end
end

addHook("LinedefExecute", TileBumper15, "TILBMP15")

local function TileBumper20(line, mo)
	mo.momz = P_AproxDistance(line.dx, line.dy)/4
	if mo.z > 3000*FRACUNIT
		P_SetObjectMomZ(mo,10*FRACUNIT)
		mo.player.rings = $ + 20
		P_NukeEnemies(mo,mo,1*FRACUNIT)
	end
end

addHook("LinedefExecute", TileBumper20, "TILBMP20")






local function GiftCode(line, mo)
	mo.momz = P_AproxDistance(line.dx, line.dy)/4


	
	if mo.player.finishedrings == 10
		P_LinedefExecute(338, mo, nil)
		P_DoPlayerPain(mo.player)
		P_SetObjectMomZ(mo,10*FRACUNIT)
		P_SpawnMobj(mo.x, mo.y, mo.z, MT_WHITEWARP)
		P_SpawnMobj(mo.x + P_RandomRange(32,-32)*mo.scale, mo.y + P_RandomRange(32,-32)*mo.scale, mo.z + P_RandomRange(48,32)*mo.scale, MT_IVSP)
		P_SpawnMobj(mo.x + P_RandomRange(32,-32)*mo.scale, mo.y + P_RandomRange(32,-32)*mo.scale, mo.z + P_RandomRange(48,32)*mo.scale, MT_TNTDUST)
		P_SpawnMobj(mo.x + P_RandomRange(32,-32)*mo.scale, mo.y + P_RandomRange(32,-32)*mo.scale, mo.z + P_RandomRange(48,32)*mo.scale, MT_IVSP)
		P_SpawnMobj(mo.x + P_RandomRange(32,-32)*mo.scale, mo.y + P_RandomRange(32,-32)*mo.scale, mo.z + P_RandomRange(48,32)*mo.scale, MT_TNTDUST)
		P_GivePlayerRings(mo.player,15)
	return end
	

	if mo.player.cmd.buttons != BT_SPIN
	and mo.player.finishedspheres > 0
		mo.player.finishedspheres = 0
	end
			
	if mo.player.finishedrings < 10
		P_SetObjectMomZ(mo,0)
		P_InstaThrust(mo,mo.angle,0)
		P_LinedefExecute(334, mo, nil)
		mo.player.state = S_PLAY_ROLL
		if (mo.player.cmd.buttons & BT_SPIN)
		and mo.player.finishedspheres == 0
			P_SpawnMobj(mo.x + P_RandomRange(32,-32)*mo.scale, mo.y + P_RandomRange(32,-32)*mo.scale, mo.z + P_RandomRange(48,32)*mo.scale, MT_DUST)
			mo.player.finishedrings = $ + 1
			mo.player.finishedspheres = $ + 1
			P_LinedefExecute(336, mo, nil)
		end
	end
end

addHook("LinedefExecute", GiftCode, "GIFTSPIN")




--------------------
local function Baphomoar1(line, mo)
	if multiplayer == true
	return end
	COM_BufInsertText(mo.player,"cecho \\\\\\\\\\\\\\\\\\welcome to the Fortune Forge Caves. This is\\a lava filled domain, which is also a casino.\\This here is 'Baphomoar', the owner.")
end

addHook("LinedefExecute", Baphomoar1, "BAPHOMR1")

--------------------


local function WallStory1(line, mo)
	if multiplayer == true
	return end
	COM_BufInsertText(mo.player,"cecho \\\\\\\\\\\\\\\\\\Deep in a series of caves with pools of lava,\\a primitive creature who loved shiny things\\lived in peace dwelt among the caves.")
end

addHook("LinedefExecute", WallStory1, "WALPNT1")

local function WallStory2(line, mo)
	if multiplayer == true
	return end
	COM_BufInsertText(mo.player,"cecho \\\\\\\\\\\\\\\\\\Rumors tell of a fairy who also dwells there\\and only appears if offered a gift. She\\loved shiny things too, especially rings.")
end

addHook("LinedefExecute", WallStory2, "WALPNT2")

local function WallStory3(line, mo)
	if multiplayer == true
	return end
	COM_BufInsertText(mo.player,"cecho \\\\\\\\\\\\\\\\\\One day, she adored a gem the creature had\\and appeared. The creature was fond of her\\and traded with her. She then vanished.")
end

addHook("LinedefExecute", WallStory3, "WALPNT3")

local function WallStory4(line, mo)
	if multiplayer == true
	return end
	COM_BufInsertText(mo.player,"cecho \\\\\\\\\\\\\\\\\\The creature was given great wealth and \\strange machines to create rings. With them,\\he made a casino, hoping to see her again.")
end

addHook("LinedefExecute", WallStory4, "WALPNT4")


local function WallStory5(line, mo)
	if multiplayer == true
	return end
	COM_BufInsertText(mo.player,"cecho \\\\\\\\\\\\\\\\\\Baphomoar scattered gold cards in various \\locations for guests to find. Good things may\\happen if certain numbers are matched.")
end

addHook("LinedefExecute", WallStory5, "WALPNT5")

local function WallStory6(line, mo)
	if multiplayer == true
	return end
	COM_BufInsertText(mo.player,"cecho \\\\\\\\\\\\\\\\\\It has been known that collecting rings\\ and taking it to a large statue built for\\Lady Fortune will grant the 'Sign of Freedom'.")
end

addHook("LinedefExecute", WallStory6, "WALPNT6")

local function WallStory7(line, mo)
	if multiplayer == true
	return end
	COM_BufInsertText(mo.player,"cecho \\\\\\\\\\\\\\\\\\Fortune Forge is a large area for new\\guests especially. To accomodate this, Warp\\Tunnels were dug out to access areas quickly.")
end

addHook("LinedefExecute", WallStory7, "WALPNT7")

local function WallStory8(line, mo)
	if multiplayer == true
	return end
	COM_BufInsertText(mo.player,"cecho \\\\\\\\\\\\\\\\\\ \\...???")
end

addHook("LinedefExecute", WallStory8, "WALPNT8")

-----------------------

mobjinfo[MT_QUIZSPOTA] = {
	doomednum = 530,
	spawnstate = S_QSPOTA,
	seestate = S_QSPOTA,
	reactiontime = TICRATE,
	speed = 0*FRACUNIT,
	radius = 32*FRACUNIT,
	height = 2*FRACUNIT,
	flags = MF_SCENERY|MF_NOGRAVITY
}

states[S_QSPOTA] = {SPR_QSPT, FF_TRANS20|FF_PAPERSPRITE|A, 1, A_None, 0, 0, S_QSPOTA}
states[S_QSPOTB] = {SPR_QSPT, FF_TRANS20|FF_PAPERSPRITE|B, 1, A_None, 0, 0, S_QSPOTB}
states[S_QSPOTC] = {SPR_QSPT, FF_TRANS20|FF_PAPERSPRITE|C, 1, A_None, 0, 0, S_QSPOTC}
states[S_QSPOTD] = {SPR_QSPT, FF_TRANS20|FF_PAPERSPRITE|D, 1, A_None, 0, 0, S_QSPOTD}

--copied from the quizgame object
	local AnswerA_x1 = -24328*FRACUNIT + 8*FRACUNIT
	local AnswerA_x2 = -24440*FRACUNIT  - 8*FRACUNIT
	local AnswerA_y1 = -25352*FRACUNIT  + 8*FRACUNIT
	local AnswerA_y2 = -25464*FRACUNIT  + 8*FRACUNIT
	
	local AnswerButtonXDiv = 128*FRACUNIT
	local AnswerButtonYDiv = -128*FRACUNIT
	
addHook("MobjThinker", function(mobj,player)
	if not (mobj and mobj.valid)
		return end	
	for player in players.iterate
		local mobjlook = R_PointToAngle2(mobj.x, mobj.y, player.mo.x, player.mo.y)

		mobj.angle = mobjlook	---stare at the player
			
		mobj.renderflags =  $|RF_FLOORSPRITE
		mobj.blendmode = AST_ADD
			if mobj.x < AnswerA_x1
			and mobj.x > AnswerA_x2
			and mobj.y < AnswerA_y1
			and mobj.y > AnswerA_y2
				mobj.state = S_QSPOTA
			end

			if mobj.x < AnswerA_x1 + AnswerButtonXDiv
			and mobj.x > AnswerA_x2 + AnswerButtonXDiv
			and mobj.y < AnswerA_y1
			and mobj.y > AnswerA_y2
				mobj.state = S_QSPOTB
			end

			if mobj.x < AnswerA_x1
			and mobj.x > AnswerA_x2
			and mobj.y < AnswerA_y1 + AnswerButtonYDiv
			and mobj.y > AnswerA_y2 + AnswerButtonYDiv
				mobj.state = S_QSPOTC
			end
			
			if mobj.x < AnswerA_x1 + AnswerButtonXDiv
			and mobj.x > AnswerA_x2 + AnswerButtonXDiv
			and mobj.y < AnswerA_y1 + AnswerButtonYDiv
			and mobj.y > AnswerA_y2 + AnswerButtonYDiv
				mobj.state = S_QSPOTD
			end
	end
end,MT_QUIZSPOTA
)


-----------------------

addHook("MobjThinker", function(mobj,player)
	if gamemap != 779 --showmap
	return end
	for player in players.iterate
	
		
		if player.ladyrings == nil
			player.ladyrings = 0
		return end
		
		if not (mobj and mobj.valid)
		return end	
		
		
		if mobj.x <= -24830*FRACUNIT
		and mobj.y <= -20600*FRACUNIT
		and player.ladyrings >= 500
			P_LinedefExecute(832, player.mo, nil)
			S_StartSound(mobj, 195)
			P_SetOrigin(mobj,-17152*FRACUNIT,-18080*FRACUNIT,2840*FRACUNIT)	
		end
	end
end,MT_EMBLEM
)

-----------------------


mobjinfo[MT_WHITEWARP] = {
	doomednum = -1,
	spawnstate = S_WHTWP1,
	deathstate = S_WHTWP1,
	reactiontime = TICRATE,
	radius = 48*FRACUNIT,
	height = 48*FRACUNIT,
	flags = MF_NOGRAVITY|MF_FLOAT|MF_NOCLIP
}
states[S_WHTWP1] = {SPR_RNGL, FF_FULLBRIGHT|FF_TRANS50|Q, 1, A_None, 0, 0, S_WHTWP2}
states[S_WHTWP2] = {SPR_RNGL, FF_FULLBRIGHT|FF_TRANS50|Q, 6, A_None, 0, 0, S_NULL}

addHook("MobjThinker", function(mobj)
	if not (mobj and mobj.valid)
		return end	

	mobj.scale = $ + 1*FRACUNIT/5
	P_SpawnGhostMobj(mobj)
	P_SpawnMobj(mobj.x + P_RandomRange(-32,32)*mobj.scale, mobj.y + P_RandomRange(-32,32)*mobj.scale, mobj.z + P_RandomRange(0,64)*mobj.scale, MT_IVSP)
		

end,MT_WHITEWARP
)


-----------------------
mobjinfo[MT_BAPHOMORE] = {
	--$Name "Baphomore"
	--$Sprite BAPHA1
	doomednum = 2156,
	spawnstate = S_BAPH1,
	seestate = S_BAPH1,
	reactiontime = TICRATE,
	speed = 0*FRACUNIT,
	radius = 32*FRACUNIT,
	height = 80*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOCLIP|MF_NOCLIPHEIGHT
}

states[S_BAPH1] = {SPR_BAPH, A , 1, A_None, 0, 0, S_BAPH1}
states[S_BAPH2] = {SPR_BAPH, B , 1, A_None, 0, 0, S_BAPH2}

addHook("MobjThinker", function(mobj)
	if not (mobj and mobj.valid)
		return end	
	if multiplayer == true
		mobj.state = S_BAPH2
	return end
	mobj.shadowscale = 1*FRACUNIT

end,MT_BAPHOMORE
)
-----------------------
mobjinfo[MT_LADYFORTUNE] = {
	--$Name "Lady Fortune"
	--$Sprite LADYA0
	doomednum = 2157,
	spawnstate = S_LADY1,
	seestate = S_LADY1,
	deathstate = S_LADY1,
	reactiontime = TICRATE,
	speed = 0*FRACUNIT,
	radius = 35*FRACUNIT,
	height = 122*FRACUNIT,
	flags = MF_NOGRAVITY|MF_SPECIAL|MF_NOCLIP|MF_NOCLIPHEIGHT
}

states[S_LADY1] = {SPR_LADY, FF_FULLBRIGHT|B , 1, A_PlaySound, 501, 1, S_LADY2}
states[S_LADY2] = {SPR_LADY, FF_FULLBRIGHT|A , 80, A_None, 0, 0, S_LADY3}
states[S_LADY3] = {SPR_LADY, FF_FULLBRIGHT|FF_PAPERSPRITE|A , 8, A_None, 0, 0, S_LADY4}
states[S_LADY4] = {SPR_LADY, FF_FULLBRIGHT|B , 1, A_None, 0, 0, S_NULL}
addHook("MobjThinker", function(mobj)
	for player in players.iterate
		if not (mobj and mobj.valid)
			return end	

		P_SetScale(mobj,1*FRACUNIT)
		if mobj.state == S_LADY1
			P_SetOrigin(mobj,-17880*FRACUNIT,-18750*FRACUNIT,1280*FRACUNIT)
			S_StartSound(mobj, 190, player)
			S_StartSound(mobj, 651, player)
			S_StartSound(mobj, 718, player)
		end
		if mobj.state == S_LADY2
			mobj.shadowscale = 1*FRACUNIT
			P_SetObjectMomZ(mobj,8*FRACUNIT)
			P_SpawnMobj(mobj.x + P_RandomRange(-92,92)*mobj.scale, mobj.y + P_RandomRange(-92,92)*mobj.scale, mobj.z + P_RandomRange(-160,160)*mobj.scale, MT_BOXSPARKLE)
		end
		if mobj.state == S_LADY3
			mobj.angle = $ + ANG1*15
			S_StartSound(mobj, 195, player)
		end
		if mobj.state == S_LADY1
		or mobj.state == S_LADY4
			P_SpawnGhostMobj(mobj)
			mobj.destscale = 3*FRACUNIT
			mobj.scalespeed = 1*FRACUNIT/10
			P_SpawnMobj(mobj.x + P_RandomRange(-32,32)*mobj.scale, mobj.y + P_RandomRange(-32,32)*mobj.scale, mobj.z + P_RandomRange(-48,48)*mobj.scale, MT_IVSP)
		end
	end
end,MT_LADYFORTUNE
)
-----------------------
mobjinfo[MT_CARDGAME] = {
	--$Name "Shuffle Game Card"
	--$Sprite CARDA0
	doomednum = 2155,
	spawnstate = S_CARDGM1,
	seestate = S_CARDGM1,
	deathstate = S_CARDGM2,
	reactiontime = TICRATE,
	speed = 0*FRACUNIT,
	radius = 42*FRACUNIT,
	height = 60*FRACUNIT,
	flags = MF_NOGRAVITY|MF_SPECIAL
}

states[S_CARDGM1] = {SPR_CARD, FF_FULLBRIGHT|FF_PAPERSPRITE|A , 2, A_ChangeAngleRelative, 4, 2, S_CARDGM1}
states[S_CARDGM2] = {SPR_CARD, FF_FULLBRIGHT|FF_PAPERSPRITE|A , 1, A_PlaySound, 501, 1, S_CARDGM2}
states[S_CARDGM3] = {SPR_CARD, FF_FULLBRIGHT|FF_PAPERSPRITE|B , 24, A_None, 0, 0, S_CARDGM4}
states[S_CARDGM4] = {SPR_NULL, A , 1080, A_None, 0, 0, S_CARDGM5}
states[S_CARDGM5] = {SPR_NULL, A , 1, A_SpawnObjectRelative, 0, 0+MT_CARDGAME, S_NULL}
--cardstate is the card number youre on 

--carddrawone is the first card
--carddrawtwo is the second card
--carddrawthree is the third card

--carddrawreward is the match you have
--1, Close match
--2, All match
--3, Straight match

addHook("MobjThinker", function(mobj)
	for player in players.iterate
		if not (mobj and mobj.valid)
			return end	

		P_SetScale(mobj,1*FRACUNIT)
		

		
			if mobj.state == S_CARDGM2
				if player.cardstate > 3
					player.cardstate = 0
				return end
				player.cardstate = $ + 1
				mobj.state = S_CARDGM3
			end
					
		if mobj.state == S_CARDGM1
		and player.leveleffects == true
			P_SpawnMobj(mobj.x + P_RandomRange(-32,32)*mobj.scale, mobj.y + P_RandomRange(-32,32)*mobj.scale, mobj.z + P_RandomRange(-48,48)*mobj.scale, MT_BOXSPARKLE)
		end
		
		if mobj.state == S_CARDGM3
			
			mobj.angle = $ + ANG1*25
			mobj.destscale = 3*FRACUNIT
			mobj.scalespeed = 1*FRACUNIT/10
			P_SpawnGhostMobj(mobj)
			P_SpawnMobj(mobj.x + P_RandomRange(-32,32)*mobj.scale, mobj.y + P_RandomRange(-32,32)*mobj.scale, mobj.z + P_RandomRange(-48,48)*mobj.scale, MT_IVSP)
			P_SetObjectMomZ(mobj,3*FRACUNIT)
		end
	end
end,MT_CARDGAME
)
-----------------------

addHook("PlayerThink", function(player)

		if player.cardstate == nil
			player.carddrawone = 0
			player.carddrawtwo = 0
			player.carddrawthree = 0
			player.cardstate = 0
			player.carddrawreward = 0
		end
		
		if player.cardstate >= 360
			
			player.carddrawone = 0
			player.carddrawtwo = 0
			player.carddrawthree = 0
			player.cardstate = 0
			player.carddrawreward = 0
		return end
			
			if player.cardstate == 0
				player.carddrawone = $ + 1
				if player.carddrawone > 9
					player.carddrawone = 0
				end
			return end
			if player.cardstate == 1
				player.carddrawtwo = $ + 1
				if player.carddrawtwo > 9
					player.carddrawtwo = 0
				end
			return end
			if player.cardstate == 2
				player.carddrawthree = $ + 1
				if player.carddrawthree > 9
					player.carddrawthree = 0
				end
			return end
	
	if player.cardstate > 2
	
			
		player.cardstate = $ + 1

		if (player.carddrawone == player.carddrawtwo
		or player.carddrawtwo == player.carddrawthree
		or player.carddrawone == player.carddrawthree)

			player.carddrawreward = 1
		end		
		if (player.carddrawone == player.carddrawtwo
		and player.carddrawone == player.carddrawthree)
			player.carddrawreward = 2
		end		
		if (player.carddrawone == player.carddrawtwo - 1
		and player.carddrawone == player.carddrawthree + 1)
		or (player.carddrawone == player.carddrawtwo + 1
		and player.carddrawone == player.carddrawthree - 1)
			player.carddrawreward = 3
		end		
		
		if player.cardstate == 4
			player.cardstate = 5
			
			if player.carddrawreward > 0
				S_StartSound(mobj, 213, player)
			end
			
			if player.carddrawreward == 1
				player.rings = $ + 5 * player.carddrawone
			return end
			if player.carddrawreward == 2
				player.score = $ + 10000 * player.carddrawone
				player.maxlink = (120)*35
				S_ChangeMusic("DBLRNG")
				--S_ChangeMusic("HALFOF")
			return end
			if player.carddrawreward == 3
				player.score = $ + 5000 * player.carddrawone
			return end
			
			S_StartSound(mobj, 285, player)
			
		end
		
		
	end
end
)
-----------------		



mobjinfo[MT_BOILSFX] = {
	doomednum = 2150,
	spawnstate = S_BOIL1,
	reactiontime = TICRATE,
	radius = 1024*FRACUNIT,
	height = 16*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOBLOCKMAP
}
states[S_BOIL1] = {SPR_NULL, A, 16, A_None, 0, 0, S_BOIL2}
states[S_BOIL2] = {SPR_NULL, A, 64, A_None, 0, 0, S_BOIL1}
addHook("MobjThinker", function(mobj)
	if not (mobj and mobj.valid)
	or mobj.state == S_BOIL2
		return end	
	
				--if not (mobj and mobj.valid) return end	
	if mobj.state == S_BOIL1
				--if not (mobj and mobj.valid) return end	
				
			--P_KillMobj(mobj,mobj,nil)
			--if not (mobj and mobj.valid) return end	
		if not S_SoundPlaying(mobj, 55)
		and not S_SoundPlaying(mobj, 56)
		and not S_SoundPlaying(mobj, 57)
		and not S_SoundPlaying(mobj, 58)
		and not S_SoundPlaying(mobj, 59)
			S_StartSound(mobj, P_RandomRange(55,59))
		end
	end
		
end,MT_BOILSFX
)
-----------------------


mobjinfo[MT_SMOKEY] = {
	doomednum = 2151,
	spawnstate = S_SMOKEY1,
	reactiontime = TICRATE,
	radius = 16*FRACUNIT,
	height = 16*FRACUNIT,
	flags = MF_SCENERY|MF_NOBLOCKMAP--|MF2_DONTDRAW
}
states[S_SMOKEY1] = {SPR_NULL, A, 1, A_None, 0, 0, S_SMOKEY2}
states[S_SMOKEY2] = {SPR_NULL, A, 1, A_None, 0, 0, S_SMOKEY1}
addHook("MobjThinker", function(mobj,player)
	if not (mobj and mobj.valid)
		return end	
	for player in players.iterate
				--if not (mobj and mobj.valid) return end
		if mobj.state == S_SMOKEY1
		and player.leveleffects == true
			P_SpawnMobj(mobj.x + P_RandomRange(128,-128)*mobj.scale, mobj.y + P_RandomRange(128,-128)*mobj.scale, mobj.z + P_RandomRange(-192,-160)*mobj.scale, MT_SMOKE)
			--P_SpawnMobj(mobj.x + P_RandomRange(64,-64)*mobj.scale, mobj.y + P_RandomRange(64,-64)*mobj.scale, mobj.z + P_RandomRange(0,160)*mobj.scale, MT_FLAMEJETFLAMEB)
			P_SpawnMobj(mobj.x + P_RandomRange(92,-92)*mobj.scale, mobj.y + P_RandomRange(92,-92)*mobj.scale, mobj.z + P_RandomRange(-256,-448)*mobj.scale, MT_CYBRAKDEMON_FLAMEREST)
		end
	end
end,MT_SMOKEY
)

-----------------------

mobjinfo[MT_FLAREBALL] = {
	doomednum = -1,
	spawnstate = S_FLRBL1,
	reactiontime = TICRATE,
	radius = 16*FRACUNIT,
	height = 16*FRACUNIT,
	flags = MF_SCENERY
}
states[S_FLRBL1] = {SPR_SFLM, A, 1, A_SetScale, 0, 1*FRACUNIT/40, S_FLRBL2}
states[S_FLRBL2] = {SPR_SFLM, A, 8, A_BubbleRise, 0, 5*FRACUNIT, S_FLRBL3}
states[S_FLRBL3] = {SPR_SFLM, FF_TRANS10|A, 1, A_BubbleRise, 0, 1*FRACUNIT, S_FLRBL4}
states[S_FLRBL4] = {SPR_SFLM, FF_TRANS20|A, 1, A_BubbleRise, 0, 1*FRACUNIT, S_FLRBL5}
states[S_FLRBL5] = {SPR_SFLM, FF_TRANS30|A, 1, A_BubbleRise, 0, 1*FRACUNIT, S_FLRBL6}
states[S_FLRBL6] = {SPR_SFLM, FF_TRANS40|A, 1, A_BubbleRise, 0, 1*FRACUNIT, S_FLRBL7}
states[S_FLRBL7] = {SPR_SFLM, FF_TRANS60|A, 1, A_BubbleRise, 0, 1*FRACUNIT, S_FLRBL8}
states[S_FLRBL8] = {SPR_SFLM, FF_TRANS80|A, 1, A_BubbleRise, 0, 1*FRACUNIT, S_NULL}

-----------------------

mobjinfo[MT_WINDGUST] = {
	doomednum = -1,
	spawnstate = S_WNDGT1,
	reactiontime = TICRATE,
	radius = 16*FRACUNIT,
	height = 16*FRACUNIT,
	flags = MF_SCENERY
}
states[S_WNDGT1] = {SPR_PRTL, A, 1, A_SetScale, 0, 1*FRACUNIT/40, S_WNDGT2}
states[S_WNDGT2] = {SPR_PRTL, A, 4, A_BubbleRise, 0, 35*FRACUNIT, S_WNDGT3}
states[S_WNDGT3] = {SPR_PRTL, FF_TRANS10|A, 4, A_BubbleRise, 0, 30*FRACUNIT, S_WNDGT4}
states[S_WNDGT4] = {SPR_PRTL, FF_TRANS20|A, 4, A_BubbleRise, 0, 25*FRACUNIT, S_WNDGT5}
states[S_WNDGT5] = {SPR_PRTL, FF_TRANS30|A, 4, A_BubbleRise, 0, 20*FRACUNIT, S_WNDGT6}
states[S_WNDGT6] = {SPR_PRTL, FF_TRANS40|A, 4, A_BubbleRise, 0, 15*FRACUNIT, S_WNDGT7}
states[S_WNDGT7] = {SPR_PRTL, FF_TRANS60|A, 4, A_BubbleRise, 0, 10*FRACUNIT, S_WNDGT8}
states[S_WNDGT8] = {SPR_PRTL, FF_TRANS80|A, 4, A_BubbleRise, 0, 5*FRACUNIT, S_NULL}

--------------------------------

mobjinfo[MT_RINGLOCK] = {
	--$Name "Loot Shield"
	--$Sprite RNGLA0
	doomednum = 730,
	spawnstate = S_RNGLK2,
	deathstate = S_RNGLK2,
	reactiontime = TICRATE,
	radius = 120*FRACUNIT,
	height = 120*FRACUNIT,
	flags = MF_NOGRAVITY|MF_FLOAT|MF_SHOOTABLE|MF_SOLID|MF_NOCLIP
}
states[S_RNGLK] = {SPR_ARMA,  FF_FULLBRIGHT|FF_ANIMATE|FF_TRANS50|A, 32, A_None, 16, 2, S_RNGLK}
states[S_RNGLK2] = {SPR_RNGL,  FF_FULLBRIGHT|FF_ANIMATE|FF_TRANS50|A, 32, A_None, 16, 2, S_RNGLK2}
states[S_RNGLK3] = {SPR_RNGL, FF_FULLBRIGHT|FF_TRANS50|Q, 1, A_None, 0, 0, S_RNGLK4}
states[S_RNGLK4] = {SPR_RNGL, FF_FULLBRIGHT|FF_TRANS50|Q, 12, A_None, 0, 0, S_NULL}


addHook("MobjThinker", function(mobj,player)
	if not (mobj and mobj.valid)
	return end	
	for player in players.iterate

/* 
player.marescore (If the half off sale is going on)
mobj.extravalue5 (Rings left to meet quota)
mobj.extravalue6 (Rings requested by the barrier)

mobj.extravalue3 (Copies hundreds of player)
mobj.extravalue2 (Copies tens of player)
mobj.extravalue4 (Copies ones of player)

*/	
		local pricecheck_radius = mobj.radius*5
		local mobjrange = R_PointToDist2(player.mo.x, player.mo.y, mobj.x, mobj.y)
		local barrier_radius = 120*FRACUNIT
		
		mobj.destscale = 5*FRACUNIT/2
		mobj.scalespeed = 4*FRACUNIT


			if mobj.extravalue3 == nil
				mobj.extravalue4 = 0
				mobj.extravalue2 = 0
				mobj.extravalue3 = 0
				mobj.extravalue5 = 0
				mobj.extravalue6 = 0
			end
			
		mobj.extravalue5 = mobj.extravalue6-player.rings
	

			
			mobj.extravalue4 = mobj.extravalue5 % 10
			mobj.extravalue2 = mobj.extravalue5/10 % 10
			mobj.extravalue3 = mobj.extravalue5/100 % 10

		if mobjrange < pricecheck_radius
		and (player.mo.z <= mobj.z + pricecheck_radius and player.mo.z >= mobj.z - pricecheck_radius)
		and not player.bot
			mobj.extravalue1 = 1 ---Multiply cost
			if mobj.eflags & MFE_VERTICALFLIP
				mobj.extravalue1 = 5 ---Multiply cost
			end
		
			if player.marescore < 3
				mobj.extravalue6 = (mobj.angle/(59500*200)) * mobj.extravalue1-- multiply cost factor
			end
			if player.marescore > 2
				mobj.extravalue6 = ((mobj.angle/(59500*200)) * mobj.extravalue1)/2-- multiply cost factor
			end			
			

			if mobj.extravalue5 >= 100
				P_SpawnMobj(mobj.x, mobj.y, mobj.z+mobj.radius-100*FRACUNIT, MT_BARRIERNUMZERO+mobj.extravalue3)	
			end
			if mobj.extravalue5 >= 10
				P_SpawnMobj(mobj.x, mobj.y, mobj.z+mobj.radius-120*FRACUNIT, MT_BARRIERNUMZERO+mobj.extravalue2)
			end		
			if mobj.extravalue5 > 0
				P_SpawnMobj(mobj.x, mobj.y, mobj.z+mobj.radius-140*FRACUNIT, MT_BARRIERNUMZERO+mobj.extravalue4)	
			end
			if mobj.extravalue5 <= 0
				P_SpawnMobj(mobj.x, mobj.y, mobj.z+mobj.radius-140*FRACUNIT, MT_BARRIERNUMZERO)	
			end

			
			--Restore blue barrier if youve stepped away
			if (mobjrange > barrier_radius
			or (player.mo.z > mobj.z + mobj.radius or player.mo.z <= mobj.z - mobj.radius))
			and mobj.state < S_RNGLK2
				P_SetMobjStateNF(mobj, S_RNGLK2)
			end
			
			--Remove barrier if you can open it
			if (player.rings >= mobj.extravalue6 )
				if mobjrange <= barrier_radius
				and (player.mo.z <= mobj.z + mobj.radius and player.mo.z >= mobj.z - mobj.radius)
				and mobj.state < S_RNGLK3
					S_StartSound(player.mo, sfx_tkdr, player)
					S_StartSound(player.mo, 194, player)
					S_StartSound(player.mo, 195, player)
					mobj.state = S_RNGLK3
					P_SpawnGhostMobj(mobj)
					P_SpawnMobj(mobj.x + P_RandomRange(-32,32)*mobj.scale, mobj.y + P_RandomRange(-32,32)*mobj.scale, mobj.z + P_RandomRange(0,64)*mobj.scale, MT_IVSP)
		
				end		
			return end

			
			--Set off red barrier if not enough
			if mobjrange <= barrier_radius
			and (player.mo.z <= mobj.z + mobj.radius and player.mo.z >= mobj.z - mobj.radius)
				P_SetMobjStateNF(mobj, S_RNGLK)
				

				
				if (player.mo.z <= mobj.z + 72*FRACUNIT)
				and (player.mo.z >= mobj.z - 72*FRACUNIT)
					player.mo.angle = R_PointToAngle2(player.mo.x, player.mo.y, mobj.x, mobj.y)
					P_InstaThrust(player.mo,player.mo.angle,-5*FRACUNIT)
					S_StartSound(player.mo, 148, player)
					S_StartSound(player.mo, 349, player)
				end
				if (player.mo.z <= mobj.z + 72*FRACUNIT)
				and (player.mo.z >= mobj.z - 72*FRACUNIT)
					player.mo.angle = R_PointToAngle2(player.mo.x, player.mo.y, mobj.x, mobj.y)
					P_SetObjectMomZ(player.mo,3*FRACUNIT)
					
					P_InstaThrust(player.mo,player.mo.angle,-3*FRACUNIT)
					S_StartSound(player.mo, 148, player)
					S_StartSound(player.mo, 349, player)
				end			

				
			return end
			

			
		end
		
		
	end
end,MT_RINGLOCK
)



mobjinfo[MT_BARRIERNUMZERO] = {
	doomednum = -1,
	spawnstate = S_BARRIERNUMZERO,
	radius = 48*FRACUNIT,
	height = 48*FRACUNIT,
	flags = MF_NOGRAVITY|MF_FLOAT|MF_NOCLIP
}
states[S_BARRIERNUMZERO] = {SPR_BNUM,  FF_FULLBRIGHT|A, 2, A_Look, 0, 0, S_NULL}

mobjinfo[MT_BARRIERNUMONE] = {
	doomednum = -1,
	spawnstate = S_BARRIERNUMONE,
	radius = 48*FRACUNIT,
	height = 48*FRACUNIT,
	flags = MF_NOGRAVITY|MF_FLOAT|MF_NOCLIP
}
states[S_BARRIERNUMONE] = {SPR_BNUM,  FF_FULLBRIGHT|B, 2, A_Look, 0, 0, S_NULL}

mobjinfo[MT_BARRIERNUMTWO] = {
	doomednum = -1,
	spawnstate = S_BARRIERNUMTWO,
	radius = 48*FRACUNIT,
	height = 48*FRACUNIT,
	flags = MF_NOGRAVITY|MF_FLOAT|MF_NOCLIP
}
states[S_BARRIERNUMTWO] = {SPR_BNUM,  FF_FULLBRIGHT|C, 2, A_Look, 0, 0, S_NULL}

mobjinfo[MT_BARRIERNUMTHREE] = {
	doomednum = -1,
	spawnstate = S_BARRIERNUMTHREE,
	radius = 48*FRACUNIT,
	height = 48*FRACUNIT,
	flags = MF_NOGRAVITY|MF_FLOAT|MF_NOCLIP
}
states[S_BARRIERNUMTHREE] = {SPR_BNUM,  FF_FULLBRIGHT|D, 2, A_Look, 0, 0, S_NULL}

mobjinfo[MT_BARRIERNUMFOUR] = {
	doomednum = -1,
	spawnstate = S_BARRIERNUMFOUR,
	radius = 48*FRACUNIT,
	height = 48*FRACUNIT,
	flags = MF_NOGRAVITY|MF_FLOAT|MF_NOCLIP
}
states[S_BARRIERNUMFOUR] = {SPR_BNUM,  FF_FULLBRIGHT|E, 2, A_Look, 0, 0, S_NULL}

mobjinfo[MT_BARRIERNUMFIVE] = {
	doomednum = -1,
	spawnstate = S_BARRIERNUMFIVE,
	radius = 48*FRACUNIT,
	height = 48*FRACUNIT,
	flags = MF_NOGRAVITY|MF_FLOAT|MF_NOCLIP
}
states[S_BARRIERNUMFIVE] = {SPR_BNUM,  FF_FULLBRIGHT|F, 2, A_Look, 0, 0, S_NULL}

mobjinfo[MT_BARRIERNUMSIX] = {
	doomednum = -1,
	spawnstate = S_BARRIERNUMSIX,
	radius = 48*FRACUNIT,
	height = 48*FRACUNIT,
	flags = MF_NOGRAVITY|MF_FLOAT|MF_NOCLIP
}
states[S_BARRIERNUMSIX] = {SPR_BNUM,  FF_FULLBRIGHT|G, 2, A_Look, 0, 0, S_NULL}

mobjinfo[MT_BARRIERNUMSEVEN] = {
	doomednum = -1,
	spawnstate = S_BARRIERNUMSEVEN,
	radius = 48*FRACUNIT,
	height = 48*FRACUNIT,
	flags = MF_NOGRAVITY|MF_FLOAT|MF_NOCLIP
}
states[S_BARRIERNUMSEVEN] = {SPR_BNUM,  FF_FULLBRIGHT|H, 2, A_Look, 0, 0, S_NULL}

mobjinfo[MT_BARRIERNUMEIGHT] = {
	doomednum = -1,
	spawnstate = S_BARRIERNUMEIGHT,
	radius = 48*FRACUNIT,
	height = 48*FRACUNIT,
	flags = MF_NOGRAVITY|MF_FLOAT|MF_NOCLIP
}
states[S_BARRIERNUMEIGHT] = {SPR_BNUM,  FF_FULLBRIGHT|I, 2, A_Look, 0, 0, S_NULL}

mobjinfo[MT_BARRIERNUMNINE] = {
	doomednum = -1,
	spawnstate = S_BARRIERNUMNINE,
	radius = 48*FRACUNIT,
	height = 48*FRACUNIT,
	flags = MF_NOGRAVITY|MF_FLOAT|MF_NOCLIP
}
states[S_BARRIERNUMNINE] = {SPR_BNUM,  FF_FULLBRIGHT|J, 2, A_Look, 0, 0, S_NULL}


mobjinfo[MT_CAVE_PAINTING1] = {
	--$Name "Cave Painting 1"
	--$Sprite WLPNA0
	doomednum = 2980,
	spawnstate = S_CAVEPAINT1,
	radius = 200*FRACUNIT,
	height = 400*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}

states[S_CAVEPAINT1] = {SPR_WLPN, FF_FULLBRIGHT|FF_PAPERSPRITE|A, 1, A_None, 0, 0, S_CAVEPAINT1}

mobjinfo[MT_CAVE_PAINTING2] = {
	--$Name "Cave Painting 2"
	--$Sprite WLPNB0
	doomednum = 2981,
	spawnstate = S_CAVEPAINT2,
	radius = 200*FRACUNIT,
	height = 400*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVEPAINT2] = {SPR_WLPN, FF_FULLBRIGHT|FF_PAPERSPRITE|B, 1, A_None, 0, 0, S_CAVEPAINT2}

mobjinfo[MT_CAVE_PAINTING3] = {
	--$Name "Cave Painting 3"
	--$Sprite WLPNC0
	doomednum = 2982,
	spawnstate = S_CAVEPAINT3,
	radius = 200*FRACUNIT,
	height = 400*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVEPAINT3] = {SPR_WLPN, FF_FULLBRIGHT|FF_PAPERSPRITE|C, 1, A_None, 0, 0, S_CAVEPAINT3}

mobjinfo[MT_CAVE_PAINTING4] = {
	--$Name "Cave Painting 4"
	--$Sprite WLPND0
	doomednum = 2983,
	spawnstate = S_CAVEPAINT4,
	radius = 200*FRACUNIT,
	height = 400*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVEPAINT4] = {SPR_WLPN, FF_FULLBRIGHT|FF_PAPERSPRITE|D, 1, A_None, 0, 0, S_CAVEPAINT4}

mobjinfo[MT_CAVE_PAINTING5] = {
	--$Name "Cave Painting 5"
	--$Sprite WLPNE0
	doomednum = 2984,
	spawnstate = S_CAVEPAINT5,
	radius = 200*FRACUNIT,
	height = 400*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVEPAINT5] = {SPR_WLPN, FF_FULLBRIGHT|FF_PAPERSPRITE|E, 1, A_None, 0, 0, S_CAVEPAINT5}

mobjinfo[MT_CAVE_PAINTING6] = {
	--$Name "Cave Painting 6"
	--$Sprite WLPNF0
	doomednum = 2985,
	spawnstate = S_CAVEPAINT6,
	radius = 200*FRACUNIT,
	height = 400*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVEPAINT6] = {SPR_WLPN, FF_FULLBRIGHT|FF_PAPERSPRITE|F, 1, A_None, 0, 0, S_CAVEPAINT6}

mobjinfo[MT_CAVE_PAINTING7] = {
	--$Name "Cave Painting 7"
	--$Sprite WLPNG0
	doomednum = 2986,
	spawnstate = S_CAVEPAINT7,
	radius = 200*FRACUNIT,
	height = 400*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVEPAINT7] = {SPR_WLPN, FF_FULLBRIGHT|FF_PAPERSPRITE|G, 1, A_None, 0, 0, S_CAVEPAINT7}

mobjinfo[MT_CAVE_PAINTING8] = {
	--$Name "Cave Painting 8"
	--$Sprite WLPNH0
	doomednum = 2987,
	spawnstate = S_CAVEPAINT8,
	radius = 200*FRACUNIT,
	height = 400*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVEPAINT8] = {SPR_WLPN, FF_FULLBRIGHT|FF_PAPERSPRITE|H, 1, A_None, 0, 0, S_CAVEPAINT8}

mobjinfo[MT_CAVE_PAINTING9] = {
	--$Name "Cave Painting 9"
	--$Sprite WLPNI0
	doomednum = 2988,
	spawnstate = S_CAVEPAINT9,
	radius = 200*FRACUNIT,
	height = 400*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVEPAINT9] = {SPR_WLPN, FF_FULLBRIGHT|FF_PAPERSPRITE|I, 1, A_None, 0, 0, S_CAVEPAINT9}



------------------------------

mobjinfo[MT_CAVE_SIGN1] = {
	--$Name "Cave Sign 1"
	--$Sprite FOSNA0
	doomednum = 2960,
	spawnstate = S_CAVESIGN1,
	radius = 32*FRACUNIT,
	height = 70*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVESIGN1] = {SPR_FOSN, FF_FULLBRIGHT|FF_PAPERSPRITE|A, 1, A_None, 0, 0, S_CAVESIGN1}
------------------------------
mobjinfo[MT_CAVE_SIGN2] = {
	--$Name "Cave Sign 2"
	--$Sprite FOSNB0
	doomednum = 2961,
	spawnstate = S_CAVESIGN2,
	radius = 32*FRACUNIT,
	height = 70*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVESIGN2] = {SPR_FOSN, FF_FULLBRIGHT|FF_PAPERSPRITE|B, 1, A_None, 0, 0, S_CAVESIGN2}
------------------------------
mobjinfo[MT_CAVE_SIGN3] = {
	--$Name "Cave Sign 3"
	--$Sprite FOSNC0
	doomednum = 2962,
	spawnstate = S_CAVESIGN3,
	radius = 32*FRACUNIT,
	height = 70*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVESIGN3] = {SPR_FOSN, FF_FULLBRIGHT|FF_PAPERSPRITE|C, 1, A_None, 0, 0, S_CAVESIGN3}
------------------------------
mobjinfo[MT_CAVE_SIGN4] = {
	--$Name "Cave Sign 4"
	--$Sprite FOSND0
	doomednum = 2963,
	spawnstate = S_CAVESIGN4,
	radius = 32*FRACUNIT,
	height = 70*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVESIGN4] = {SPR_FOSN, FF_FULLBRIGHT|FF_PAPERSPRITE|D, 1, A_None, 0, 0, S_CAVESIGN4}
------------------------------
mobjinfo[MT_CAVE_SIGN5] = {
	--$Name "Cave Sign 5"
	--$Sprite FOSNE0
	doomednum = 2964,
	spawnstate = S_CAVESIGN5,
	radius = 32*FRACUNIT,
	height = 70*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVESIGN5] = {SPR_FOSN, FF_FULLBRIGHT|FF_PAPERSPRITE|E, 1, A_None, 0, 0, S_CAVESIGN5}
------------------------------
mobjinfo[MT_CAVE_SIGN6] = {
	--$Name "Cave Sign 6"
	--$Sprite FOSNF0
	doomednum = 2965,
	spawnstate = S_CAVESIGN6,
	radius = 32*FRACUNIT,
	height = 70*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVESIGN6] = {SPR_FOSN, FF_FULLBRIGHT|FF_PAPERSPRITE|F, 1, A_None, 0, 0, S_CAVESIGN6}
------------------------------
mobjinfo[MT_CAVE_SIGN7] = {
	--$Name "Cave Sign 7"
	--$Sprite FOSNG0
	doomednum = 2966,
	spawnstate = S_CAVESIGN7,
	radius = 32*FRACUNIT,
	height = 70*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVESIGN7] = {SPR_FOSN, FF_FULLBRIGHT|FF_PAPERSPRITE|G, 1, A_None, 0, 0, S_CAVESIGN7}
------------------------------
mobjinfo[MT_CAVE_SIGN8] = {
	--$Name "Cave Sign 8"
	--$Sprite FOSNH0
	doomednum = 2967,
	spawnstate = S_CAVESIGN8,
	radius = 32*FRACUNIT,
	height = 70*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVESIGN8] = {SPR_FOSN, FF_FULLBRIGHT|FF_PAPERSPRITE|H, 1, A_None, 0, 0, S_CAVESIGN8}
------------------------------
mobjinfo[MT_CAVE_SIGN9] = {
	--$Name "Cave Sign 9"
	--$Sprite FOSNI0
	doomednum = 2968,
	spawnstate = S_CAVESIGN9,
	radius = 32*FRACUNIT,
	height = 70*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVESIGN9] = {SPR_FOSN, FF_FULLBRIGHT|FF_PAPERSPRITE|I, 1, A_None, 0, 0, S_CAVESIGN9}
------------------------------
mobjinfo[MT_CAVE_SIGN10] = {
	--$Name "Cave Sign 10"
	--$Sprite FOSNJ0
	doomednum = 2969,
	spawnstate = S_CAVESIGN10,
	radius = 32*FRACUNIT,
	height = 70*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVESIGN10] = {SPR_FOSN, FF_FULLBRIGHT|FF_PAPERSPRITE|J, 1, A_None, 0, 0, S_CAVESIGN10}
------------------------------
mobjinfo[MT_CAVE_SIGN11] = {
	--$Name "Cave Sign 11"
	--$Sprite FOSNK0
	doomednum = 2970,
	spawnstate = S_CAVESIGN11,
	radius = 32*FRACUNIT,
	height = 70*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVESIGN11] = {SPR_FOSN, FF_FULLBRIGHT|FF_PAPERSPRITE|K, 1, A_None, 0, 0, S_CAVESIGN11}
------------------------------
mobjinfo[MT_CAVE_SIGN12] = {
	--$Name "Cave Sign 12"
	--$Sprite FOSNL0
	doomednum = 2971,
	spawnstate = S_CAVESIGN12,
	radius = 32*FRACUNIT,
	height = 70*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVESIGN12] = {SPR_FOSN, FF_FULLBRIGHT|FF_PAPERSPRITE|L, 1, A_None, 0, 0, S_CAVESIGN12}
------------------------------
mobjinfo[MT_CAVE_SIGN13] = {
	--$Name "Cave Sign 13"
	--$Sprite FOSNM0
	doomednum = 2972,
	spawnstate = S_CAVESIGN13,
	radius = 32*FRACUNIT,
	height = 70*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVESIGN13] = {SPR_FOSN, FF_FULLBRIGHT|FF_PAPERSPRITE|M, 1, A_None, 0, 0, S_CAVESIGN13}
------------------------------
mobjinfo[MT_CAVE_SIGN14] = {
	--$Name "Cave Sign 14"
	--$Sprite FOSNN0
	doomednum = 2973,
	spawnstate = S_CAVESIGN14,
	radius = 32*FRACUNIT,
	height = 70*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVESIGN14] = {SPR_FOSN, FF_FULLBRIGHT|FF_PAPERSPRITE|N, 1, A_None, 0, 0, S_CAVESIGN14}
------------------------------
mobjinfo[MT_CAVE_SIGN15] = {
	--$Name "Cave Sign 15"
	--$Sprite FOSNO0
	doomednum = 2974,
	spawnstate = S_CAVESIGN15,
	radius = 32*FRACUNIT,
	height = 70*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVESIGN15] = {SPR_FOSN, FF_FULLBRIGHT|FF_PAPERSPRITE|O, 1, A_None, 0, 0, S_CAVESIGN15}
------------------------------
mobjinfo[MT_CAVE_SIGN16] = {
	--$Name "Cave Sign 16"
	--$Sprite FOSNP0
	doomednum = 2975,
	spawnstate = S_CAVESIGN16,
	radius = 32*FRACUNIT,
	height = 70*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVESIGN16] = {SPR_FOSN, FF_FULLBRIGHT|FF_PAPERSPRITE|P, 1, A_None, 0, 0, S_CAVESIGN16}
------------------------------
mobjinfo[MT_CAVE_SIGN17] = {
	--$Name "Cave Sign 17"
	--$Sprite FOSNQ0
	doomednum = 2976,
	spawnstate = S_CAVESIGN17,
	radius = 32*FRACUNIT,
	height = 70*FRACUNIT,
	flags = MF_NOGRAVITY|MF_NOTHINK|MF_SCENERY|MF_NOCLIP
}
states[S_CAVESIGN17] = {SPR_FOSN, FF_FULLBRIGHT|FF_PAPERSPRITE|Q, 1, A_None, 0, 0, S_CAVESIGN17}
------------------------------



-----------------------

mobjinfo[MT_QUIZGAME] = {
	--$Name "SRB2 Quiz Game"
	--$Sprite SPOSA1
	doomednum = 2930,
	spawnstate = S_QUIZ1,
	seestate = S_QUIZ1,
	deathstate = S_QUIZ2,
	reactiontime = TICRATE,
	speed = 0*FRACUNIT,
	radius = 80*FRACUNIT,
	height = 4*FRACUNIT,
	flags = MF_SPECIAL
}

states[S_QUIZ1] = {SPR_NULL, A , 1, A_None, 0, 0, S_QUIZ1}
states[S_QUIZ2] = {SPR_NULL, A , 2, A_None, 0, 0, S_QUIZ2}
states[S_QUIZ3] = {SPR_NULL, A , 1, A_SpawnFreshCopy, 0, 0, S_NULL}

addHook("MobjThinker", function(mobj,player)

	local AnswerA_x1 = -24328*FRACUNIT + 8*FRACUNIT
	local AnswerA_x2 = -24440*FRACUNIT  - 8*FRACUNIT
	local AnswerA_y1 = -25352*FRACUNIT  + 8*FRACUNIT
	local AnswerA_y2 = -25464*FRACUNIT  + 8*FRACUNIT
	
	local AnswerButtonXDiv = 128*FRACUNIT
	local AnswerButtonYDiv = -128*FRACUNIT
	
	if gamemap != 779 --showmap
	and multiplayer == true
	return end
	for player in players.iterate
		
		if player.lastmarescore == 0
			player.quizsong = P_RandomFixed(0,3)/19384
			
		end
		
		if mobj.state == S_QUIZ2 --start the quiz
		and player.lastmarescore == 0
			player.lastmarescore = 1
			player.questionnum = P_RandomFixed(1,2)*6/8192
			
			S_StartSound(player.mo, 177, nil)
			S_StartSound(player.mo, 183, nil)
			S_FadeMusic(0,7200,player)
			if player.quizsong == 0
				S_ChangeMusic("GFZ2",true,player,nil,nil,11000)
			end
			if player.quizsong == 1
				S_ChangeMusic("SPEC3",true,player,nil,nil,11000)
			end
			if player.quizsong == 2
				S_ChangeMusic("MP_FIR",true,player,nil,nil,11000)
			end
			if player.quizsong == 3
				S_ChangeMusic("MP_MED",true,player,nil,nil,11000)
			end
			COM_BufInsertText(player,"cecho \\\\\\\\\\\\\\\\\\\\\\QUIZ START!")
			P_LinedefExecute(795, player.mo, nil)
		end
		
		if player.questionready == 385
			P_LinedefExecute(796, player.mo, nil)
		end
		if player.questionready == 375
			P_LinedefExecute(797, player.mo, nil)
		end
		if player.questionready == 365
			P_LinedefExecute(798, player.mo, nil)
		end
		if player.questionready == 355
			P_LinedefExecute(799, player.mo, nil)
		end
		if player.questionready == 345
			P_LinedefExecute(800, player.mo, nil)
		end
		if player.questionready == 335
			P_LinedefExecute(801, player.mo, nil)
		end
		if player.questionready == 325
			P_LinedefExecute(802, player.mo, nil)
		end
		if player.questionready == 315
			P_LinedefExecute(803, player.mo, nil)
		end		
		if player.questionready == 305
			P_LinedefExecute(804, player.mo, nil)
		end
		if player.questionready == 295
			P_LinedefExecute(805, player.mo, nil)
		end
		if player.questionready == 285
			P_LinedefExecute(806, player.mo, nil)
		end
		if player.questiontimer == nil
		or player.lastmarescore == 0
			player.questiontimer = 0
			player.questionnum = 0
			player.questionready = 395
			player.questionoption = 0
			player.questionoptionlist = 0
			player.quizsong = 0
		return end
	

		
		--player.score = player.questionnum
		
		if player.questiontimer == 1
			player.questionready = 215
		end
		if player.questionready == 1
			player.questionnum = $ + 1
			if player.questionnum >= 50 --The current build has this many questions available
				player.questionnum = 0
			end
			player.questiontimer = 575+(36*5)
		end		
		
		if player.questionready == 36*4
		or player.questionready == 36*3
		or player.questionready == 36*2
		or player.questionready == 36
			S_StartSound(player.mo, 171, nil)
			if player.powers[pw_extralife] == 0
			and player.lastmarescore == 2 --ok we get it we got it right...
				if player.quizsong == 0
					S_ChangeMusic("GFZ2",true,player,nil,nil,0)
				end
				if player.quizsong == 1
					S_ChangeMusic("SPEC3",true,player,nil,nil,0)
				end
				if player.quizsong == 2
					S_ChangeMusic("MP_FIR",true,player,nil,nil,0)
				end
				if player.quizsong == 3
					S_ChangeMusic("MP_MED",true,player,nil,nil,0)
				end
			end
		end		

		if player.questiontimer == 36*6
		or player.questiontimer == 36*5
		or player.questiontimer == 36*4
		or player.questiontimer == 36*3
		or player.questiontimer == 36*2
		or player.questiontimer == 36
			S_StartSound(player.mo, 104, nil)
		end		
		
		--sound 180, 185 and 136 for correct
		--sound 113 for wrong
		if player.questionready == 1
			S_StartSound(player.mo, 165, nil)
			player.lastmarescore = 1 --the game has begun!
		end		


		if player.questionready > 0

		
			
			player.questionoption = P_RandomRange(0,3)--/16384	
			player.questionoptionlist = P_RandomFixed(1,2)/8192	
			
			player.questionsOLDC = 0 --stop the OLDC questions if limit is passed
			if player.questionnum <= 50
				player.questionsOLDC = P_RandomFixed(1,2)/8192
			end
			player.questionsOLDC_lump = 0
			if player.questionsOLDC > 1
				player.questionsOLDC_lump = 200
			end
		
			player.questionready = $ - 1
			
			if player.questionoption <= 0
				player.questionoption = 0
				player.questionoptionlist = P_RandomFixed(1,2)/8192	
			end
			if player.questionoption >= 3
				player.questionoption = 3
				player.questionoptionlist = P_RandomFixed(1,2)/8192	
			end	
		end
		
		

		if player.questiontimer > 0
			player.questiontimer = $ - 1
			
		end
		
		if player.questiontimer == 1
			if player.mo.x < AnswerA_x1
			and player.mo.x > AnswerA_x2
			and player.mo.y < AnswerA_y1
			and player.mo.y > AnswerA_y2
			and player.questionoption <= 0
				if not S_SoundPlaying(player.mo, 180)
					S_StartSound(player.mo, 136, nil)
					S_StartSound(player.mo, 180, nil)
					S_StartSound(player.mo, 185, nil)
				end
				P_LinedefExecute(792, player.mo, nil)
				player.lastmarescore = 2 --we got it right
			return end

			if player.mo.x < AnswerA_x1 + AnswerButtonXDiv
			and player.mo.x > AnswerA_x2 + AnswerButtonXDiv
			and player.mo.y < AnswerA_y1
			and player.mo.y > AnswerA_y2
			and player.questionoption == 1
				if not S_SoundPlaying(player.mo, 180)
					S_StartSound(player.mo, 136, nil)
					S_StartSound(player.mo, 180, nil)
					S_StartSound(player.mo, 185, nil)
				end
				P_LinedefExecute(792, player.mo, nil)
				player.lastmarescore = 2
			return end

			if player.mo.x < AnswerA_x1
			and player.mo.x > AnswerA_x2
			and player.mo.y < AnswerA_y1 + AnswerButtonYDiv
			and player.mo.y > AnswerA_y2 + AnswerButtonYDiv
			and player.questionoption == 2
				if not S_SoundPlaying(player.mo, 180)
					S_StartSound(player.mo, 136, nil)
					S_StartSound(player.mo, 180, nil)
					S_StartSound(player.mo, 185, nil)
				end
				P_LinedefExecute(792, player.mo, nil)
				player.lastmarescore = 2
			return end
			
			if player.mo.x < AnswerA_x1 + AnswerButtonXDiv
			and player.mo.x > AnswerA_x2 + AnswerButtonXDiv
			and player.mo.y < AnswerA_y1 + AnswerButtonYDiv
			and player.mo.y > AnswerA_y2 + AnswerButtonYDiv
			and player.questionoption >= 3
				if not S_SoundPlaying(player.mo, 180)
					S_StartSound(player.mo, 136, nil)
					S_StartSound(player.mo, 180, nil)
					S_StartSound(player.mo, 185, nil)
				end
				P_LinedefExecute(792, player.mo, nil)
				player.lastmarescore = 2
			return end
			P_LinedefExecute(807, player.mo, nil)
			S_StartSound(player.mo, 113, nil)
			S_FadeMusic(0,3600,player)
			S_ChangeMusic("FOZ",true,player,nil,nil,3600)
			player.lastmarescore = 0 --game end
			mobj.state = S_QUIZ3
		end

	end
end,MT_QUIZGAME
)



mobjinfo[MT_CASINOLIGHTREE] = {
	--$Name "Casino Light Tree"
	--$Sprite CVTRA0
	doomednum = 2840,
	spawnstate = S_CASINOLIGHTREE1,
	deathstate = S_CASINOLIGHTREE1,
	reactiontime = TICRATE,
	radius = 132*FRACUNIT,
	height = 50*FRACUNIT,
	flags = MF_SCENERY|MF_NOGRAVITY
}
states[S_CASINOLIGHTREE1] = {SPR_CVTR,  FF_FULLBRIGHT|FF_PAPERSPRITE|FF_ANIMATE|FF_TRANS50|A, 30, A_None, 15, 2, S_CASINOLIGHTREE1}





addHook("PreThinkFrame", do
	for player in players.iterate
		if player.split == nil
			player.split = false
		end
		player.split = splitscreen
	end
end
)


local function halfofftext(v, player)
	if gamemap != 779 --showmap
	return end

	if player.marescore > 0
		if player.split != true
			v.drawString(160, 125,"50%",V_HUDTRANS|V_SNAPTOBOTTOM|V_BLUEMAP,"center")
			v.drawString(160, 125,"BARRIER COSTS ARE         OFF! OFFER ENDS IN:",V_HUDTRANS|V_SNAPTOBOTTOM,"center")
			v.drawString(160, 135,player.marescore/35,V_HUDTRANS|V_SNAPTOBOTTOM|V_YELLOWMAP,"center")
		end
		if player.split == true
			v.drawString(160, 40,"50%",V_HUDTRANS|V_SNAPTOBOTTOM|V_BLUEMAP,"small-center")
			v.drawString(160, 40,"BARRIER COSTS ARE         OFF! OFFER ENDS IN:",V_HUDTRANS|V_SNAPTOBOTTOM,"small-center")
			v.drawString(160, 50,player.marescore/35,V_HUDTRANS|V_SNAPTOBOTTOM|V_YELLOWMAP,"center")
		end
	end
end
hud.add(halfofftext)


local function doublerings(v, player)
	if gamemap != 779 --showmap
	return end

	if player.maxlink > 0
		if player.split != true
			v.drawString(110, 125,"TWICE",V_HUDTRANS|V_SNAPTOBOTTOM|V_GREENMAP,"center")
			v.drawString(160, 125,"RINGS ARE NOW             THEIR WORTH! OFFER ENDS IN:",V_HUDTRANS|V_SNAPTOBOTTOM,"center")
			v.drawString(160, 135,player.maxlink/35,V_HUDTRANS|V_SNAPTOBOTTOM|V_YELLOWMAP,"center")
		end
		if player.split == true
			v.drawString(110, 40,"TWICE",V_HUDTRANS|V_SNAPTOBOTTOM|V_GREENMAP,"small-center")
			v.drawString(160, 40,"RINGS ARE NOW             THEIR WORTH! OFFER ENDS IN:",V_HUDTRANS|V_SNAPTOBOTTOM,"small-center")
			v.drawString(160, 50,player.maxlink/35,V_HUDTRANS|V_SNAPTOBOTTOM|V_YELLOWMAP,"center")
		end
	end
end
hud.add(doublerings)

--cardstate is the card number youre on 
--carddrawone is the first card
--carddrawtwo is the second card
--carddrawthree is the second card

local function cardtext(v, player)
	if gamemap != 779 --showmap
	return end

		local vidflag3456743_y = 170
		local vidflag3456743 = V_HUDTRANS|V_SNAPTOLEFT|V_SNAPTOBOTTOM
		local vidflag7642563 = "fixed-center"
		
		--v.drawString(158, 90,player.carddrawone,V_HUDTRANS|V_SNAPTOBOTTOM|V_YELLOWMAP,"center")
		--v.drawString(168, 90,player.carddrawtwo,V_HUDTRANS|V_SNAPTOBOTTOM|V_YELLOWMAP,"center")
		--v.drawString(178, 90,player.carddrawthree,V_HUDTRANS|V_SNAPTOBOTTOM|V_YELLOWMAP,"center")			
		--v.drawString(188, 90,player.cardstate,V_HUDTRANS|V_SNAPTOBOTTOM|V_YELLOWMAP,"center")			
		
		
		if player.split != true
			if player.cardstate < 1
				v.drawScaled(128, vidflag3456743_y, 1*FRACUNIT/2, v.cachePatch("HUDGMCD4"),  vidflag3456743)
			end
			if player.cardstate < 2
				v.drawScaled(128, vidflag3456743_y, 1*FRACUNIT/2, v.cachePatch("HUDGMCD5"),  vidflag3456743)
			end
			if player.cardstate < 3
				v.drawScaled(128, vidflag3456743_y, 1*FRACUNIT/2, v.cachePatch("HUDGMCD6"),  vidflag3456743)
			end
			
			
			if player.cardstate > 0
				v.drawScaled(128, 0, 1*FRACUNIT/2, v.cachePatch("HUDGMCD1"),  vidflag3456743)
				v.drawString(28, vidflag3456743_y-24,player.carddrawone,vidflag3456743,"center")
				end
			if player.cardstate > 1
				v.drawScaled(128, 0, 1*FRACUNIT/2, v.cachePatch("HUDGMCD2"),  vidflag3456743)
				v.drawString(44, vidflag3456743_y-24,player.carddrawtwo,vidflag3456743,"center")
			end
			if player.cardstate > 2
				v.drawScaled(128, 0, 1*FRACUNIT/2, v.cachePatch("HUDGMCD3"),  vidflag3456743)
				v.drawString(60, vidflag3456743_y-24,player.carddrawthree,vidflag3456743,"center")
			end
			
			
			
			if player.cardstate > 3
				if player.carddrawreward == 0
					v.drawString(168, 165,"No match. Try again.",V_HUDTRANS|V_SNAPTOBOTTOM,"center")
				end
				if player.carddrawreward == 1
					v.drawString(168, 165,"Double Match! WINNER!",V_HUDTRANS|V_SNAPTOBOTTOM|V_GREENMAP,"center")
					v.drawString(168, 175,"+RINGS BONUS",V_HUDTRANS|V_SNAPTOBOTTOM|V_ORANGEMAP,"center")
				end
				if player.carddrawreward == 2
					v.drawString(168, 165,"Triple Match! WINNER!",V_HUDTRANS|V_SNAPTOBOTTOM|V_GREENMAP,"center")
				end
				if player.carddrawreward == 3
					v.drawString(168, 165,"Straight Match! WINNER!",V_HUDTRANS|V_SNAPTOBOTTOM|V_GREENMAP,"center")
					v.drawString(168, 175,"+SCORE BONUS",V_HUDTRANS|V_SNAPTOBOTTOM|V_ORANGEMAP,"center")
				end
			end
		end
		if player.split == true
			if player.cardstate > 0
				v.drawString(32, 70,player.carddrawone,V_HUDTRANS|V_SNAPTOBOTTOM|V_BLUEMAP,"center")
			end
			if player.cardstate > 1
				v.drawString(40, 70,player.carddrawtwo,V_HUDTRANS|V_SNAPTOBOTTOM|V_REDMAP,"center")
			end
			if player.cardstate > 2
				v.drawString(48, 70,player.carddrawthree,V_HUDTRANS|V_SNAPTOBOTTOM|V_YELLOWMAP,"center")
			end
			if player.cardstate > 3
				if player.carddrawreward == 0
					v.drawString(168, 165,"No match. Try again.",V_HUDTRANS|V_SNAPTOBOTTOM,"center")
				end
				if player.carddrawreward == 1
					v.drawString(168, 165,"Double Match! WINNER!",V_HUDTRANS|V_SNAPTOBOTTOM|V_GREENMAP,"center")
					v.drawString(168, 175,"+RINGS BONUS",V_HUDTRANS|V_SNAPTOBOTTOM|V_ORANGEMAP,"center")
				end
				if player.carddrawreward == 2
					v.drawString(168, 165,"Triple Match! WINNER!",V_HUDTRANS|V_SNAPTOBOTTOM|V_GREENMAP,"center")
				end
				if player.carddrawreward == 3
					v.drawString(168, 165,"Straight Match! WINNER!",V_HUDTRANS|V_SNAPTOBOTTOM|V_GREENMAP,"center")
					v.drawString(168, 175,"+SCORE BONUS",V_HUDTRANS|V_SNAPTOBOTTOM|V_ORANGEMAP,"center")
				end
			end
		end

end
hud.add(cardtext)



local function ladytext(v, player, mo)
	if gamemap != 779 --showmap
	return end

	if player.ladyringscooldown == 0
	and player.ladyrings < 500
	
		v.drawString(70, 60,"Lady Fortune's current reward:",V_HUDTRANS|V_SNAPTOLEFT|V_SNAPTOTOP|V_PURPLEMAP,"small-center")

			
		if player.ladyrings < 150
			v.drawString(70, 65,"'Level Completion'",V_HUDTRANS|V_SNAPTOLEFT|V_SNAPTOTOP|V_GRAYMAP,"small-center")
			if player.rings < 150 - player.ladyrings
				
				v.drawString(70, 70,"Cost:"+(150-player.ladyrings)+" RINGS",V_HUDTRANS|V_SNAPTOLEFT|V_SNAPTOTOP|V_REDMAP,"small-center")
			end
			if player.rings >= 150 - player.ladyrings
				v.drawString(70, 65,"'Level Completion'",player.mo.hudflash<<V_ALPHASHIFT|V_SNAPTOLEFT|V_SNAPTOTOP,"small-center")
				v.drawString(70, 70,"Cost:"+(150-player.ladyrings)+" RINGS",V_HUDTRANS|V_SNAPTOLEFT|V_SNAPTOTOP|V_GREENMAP,"small-center")
				v.drawString(70, 70,"Cost:"+(150-player.ladyrings)+" RINGS",player.mo.hudflash<<V_ALPHASHIFT|V_SNAPTOLEFT|V_SNAPTOTOP,"small-center")
			end
		
		end

		if player.ladyrings < 350
		and player.ladyrings >= 150
		
			v.drawString(70, 65,"'Emerald Token'",V_HUDTRANS|V_SNAPTOLEFT|V_SNAPTOTOP|V_GRAYMAP,"small-center")
			if player.rings < 350 - player.ladyrings
				
				v.drawString(70, 70,"Cost:"+(350-player.ladyrings)+" RINGS",V_HUDTRANS|V_SNAPTOLEFT|V_SNAPTOTOP|V_REDMAP,"small-center")
			end
			if player.rings >= 350 - player.ladyrings
				v.drawString(70, 65,"'Emerald Token'",player.mo.hudflash<<V_ALPHASHIFT|V_SNAPTOLEFT|V_SNAPTOTOP,"small-center")
				v.drawString(70, 70,"Cost:"+(350-player.ladyrings)+" RINGS",V_HUDTRANS|V_SNAPTOLEFT|V_SNAPTOTOP|V_GREENMAP,"small-center")
				v.drawString(70, 70,"Cost:"+(350-player.ladyrings)+" RINGS",player.mo.hudflash<<V_ALPHASHIFT|V_SNAPTOLEFT|V_SNAPTOTOP,"small-center")
			end

		end
		
		if player.ladyrings >= 350
		
			v.drawString(70, 65,"'Emblem'",V_HUDTRANS|V_SNAPTOLEFT|V_SNAPTOTOP|V_GRAYMAP,"small-center")
			if player.rings < 500 - player.ladyrings
				
				v.drawString(70, 70,"Cost:"+(500-player.ladyrings)+" RINGS",V_HUDTRANS|V_SNAPTOLEFT|V_SNAPTOTOP|V_REDMAP,"small-center")
			end
			if player.rings >= 500 - player.ladyrings
				v.drawString(70, 65,"'Emblem'",player.mo.hudflash<<V_ALPHASHIFT|V_SNAPTOLEFT|V_SNAPTOTOP,"small-center")
				v.drawString(70, 70,"Cost:"+(500-player.ladyrings)+" RINGS",V_HUDTRANS|V_SNAPTOLEFT|V_SNAPTOTOP|V_GREENMAP,"small-center")
				v.drawString(70, 70,"Cost:"+(500-player.ladyrings)+" RINGS",player.mo.hudflash<<V_ALPHASHIFT|V_SNAPTOLEFT|V_SNAPTOTOP,"small-center")
			end
		end
	end
	
	if player.ladyringscooldown > 0
		if player.ladyrings == 150
			v.drawString(30, 60,"You have earned:",V_HUDTRANS|V_SNAPTOTOP,"small-center")
			v.drawString(30, 65,"'Level Completion'",V_HUDTRANS|V_SNAPTOTOP|V_GREENMAP,"small-center")
			v.drawString(30, 70,"Play for more rewards!",V_HUDTRANS|V_SNAPTOTOP|V_ORANGEMAP,"small-center")
		end
		if player.ladyrings == 350
			v.drawString(30, 60,"You have earned:",V_HUDTRANS|V_SNAPTOTOP,"small-center")
			v.drawString(30, 65,"'Emerald Token'",V_HUDTRANS|V_SNAPTOTOP|V_GREENMAP,"small-center")
			v.drawString(30, 70,"Play for more rewards!",V_HUDTRANS|V_SNAPTOTOP|V_ORANGEMAP,"small-center")
		end
		if player.ladyrings == 500
			v.drawString(30, 60,"You have earned:",V_HUDTRANS|V_SNAPTOTOP,"small-center")
			v.drawString(30, 65,"'Emblem'",V_HUDTRANS|V_SNAPTOTOP|V_GREENMAP,"small-center")
			v.drawString(30, 70,"Thank you for playing!",V_HUDTRANS|V_SNAPTOTOP|V_ORANGEMAP,"small-center")
		end
	end
end
hud.add(ladytext)



local function quizgame(v, player)
	if gamemap != 779 --showmap
	return end


		local vidflag029345_x = 160*FRACUNIT
		local vidflag029345_y = 215*FRACUNIT
		local vidflag029345 = V_CENTERNAMETAG|V_SNAPTOTOP
		local vidflag385236 = V_CENTERNAMETAG|V_SNAPTOBOTTOM
		local vidflag283475 = "fixed-center"
		local vidflag28342 = "center"
-------------Correct
		if player.lastmarescore == 2
			v.drawString(70, 46,"+",V_HUDTRANS|V_SNAPTOTOP|V_GREENMAP,"center")
			v.drawString(85, 46,"20",V_HUDTRANS|V_SNAPTOTOP|V_YELLOWMAP,"center")
			v.drawString(85, 46,"20",player.mo.hudflash<<V_ALPHASHIFT|V_SNAPTOTOP,"center")	
		
		
			v.drawString(vidflag029345_x, vidflag029345_y-60*FRACUNIT,"CORRECT!",V_HUDTRANS|vidflag029345,"fixed-center")	
			if player.mo.colorflash < 60
				v.drawString(vidflag029345_x, vidflag029345_y-60*FRACUNIT,"CORRECT!",V_HUDTRANS/2|V_ADD|vidflag029345|player.mo.colorflash<<V_CHARCOLORSHIFT/4,"fixed-center")	
			end
		end
-------------Setup		
		if player.questionready > 0
		and player.lastmarescore > 0
			v.drawString(vidflag029345_x, vidflag029345_y-140*FRACUNIT,"(Questions in yellow are OLDC related!)",V_HUDTRANS|vidflag029345|V_YELLOWMAP,"thin-fixed-center")
			v.drawString(vidflag029345_x, vidflag029345_y-140*FRACUNIT,"(Questions in yellow are OLDC related!)",player.mo.hudflash<<V_ALPHASHIFT|vidflag029345,"thin-fixed-center")
			
			
			
			v.drawString(vidflag029345_x, vidflag029345_y-120*FRACUNIT,"(Stand on the color of your",V_HUDTRANS|vidflag029345|V_GRAYMAP,"thin-fixed-center")
			v.drawString(vidflag029345_x, vidflag029345_y-110*FRACUNIT,"answer before time runs out!)",V_HUDTRANS|vidflag029345|V_GRAYMAP,"thin-fixed-center")
			v.drawString(vidflag029345_x, vidflag029345_y-90*FRACUNIT,"Next Question in... ",V_HUDTRANS|vidflag029345,"thin-fixed-center")
			v.drawString(vidflag029345_x, vidflag029345_y-80*FRACUNIT,player.questionready/36,V_HUDTRANS|vidflag029345|V_MAGENTAMAP,"fixed-center")
		end
		

----------Questions/Choices
	if player.questiontimer > 0

local Questions = {
[0] = "Q: What year did the Sonic Robo Blast 2 'IRC Match Beta' release?",
[1] = "Q: What is Sonic's default Special ability?",
[2] = "Q: What zone is currently classified as 'MAP 07'?",
[3] = "Q: What color is the chaos emerald you obtain in 'Cavern Fortress'?",
[4] = "Q: Which character by default does NOT float or fly?",
[5] = "Q: What cartoon does Arid Canyon Zone Act 1 reference?",
[6] = "Q: What currently classified 'MAP' number is Egg Rock Zone Act 2?",
[7] = "Q: How many fireballs are at the start of Red Volcano Zone Act 1?",
[8] = "Q: How many emblems are required to unlock 'Emblem Hints'?",
[9] = "Q: How many emblems are required to unlock 'Pandora's Box'?",
[10] = "Q: What is required to unlock 'Haunted Heights Zone'?",
[11] = "Q: What is the final zone of 'Campaign Mode'?",
[12] = "Q: How many Secret NiGHTS Stages are unlockable?",
[13] = "Q: What color is the number '2' in the Sonic Robo Blast 2 logo?",
[14] = "Q: How many bushes are behind you at the start of Greenflower Zone Act 2?",
[15] = "Q: How many windows are in the 1st building in Techno Hill Zone Act 1?",
[16] = "Q: What does the Arid Canyon Zone Act 3 boss do if you play as 'Fang'?",
[17] = "Q: What legacy zone remained as an unlock for obtaining all emblems?",
[18] = "Q: What zone is currently classified as 'MAP F7'?",
[19] = "Q: What zone is currently classified as 'MAP 70'?",
[20] = "Q: What is the name of the creature who runs the Fortune Forge Zone?",
[21] = "Q: How many spheres are needed to clear 'Multiplayer Special Stage 1'?",
[22] = "Q: What color is the chaos emerald you obtain in 'Dusty Wasteland'?",
[23] = "Q: What year did Sonic Robo Blast 2 first release?",
[24] = "Q: How many quills are there on the Sonic Robo Blast 2 logo emblem?",
[25] = "Q: What keyboard key do you press to delete a save file?",
[26] = "Q: What playstyle proclaims to 'open up the highest level of play'?",
[27] = "Q: What position is the clock on the 'Record Attack' menu pointing to?",
[28] = "Q: Where does the character 'Black Eggman (Brak)' originate from?",
[29] = "Q: What 'Match Mode' map uses a cover of the 'Green Hill Zone' theme?",
[30] = "Q: Who is the knight-like badnik seen in Castle Eggman Zone Act 1?",
[31] = "Q: Who is the bomb-dropping badnik seen in Red Volcano Zone Act 1?",
[32] = "Q: What is the ability name to fly faster in a NiGHTS Special stage?",
[33] = "Q: What zone features a sun setting in the distance?",
[34] = "Q: What item hides behind a pillar at the start of Deep Sea Zone Act 1?",
[35] = "Q: What version of Sonic Robo Blast 2 introduced slopes?",
[36] = "Q: What engine is Sonic Robo Blast 2 built in?",
[37] = "Q: Where does the character 'Amy Rose' originate from?",
[38] = "Q: Where does the character 'Fang' originate from?",
[39] = "Q: What is the name of the giant fairy who appears in Fortune Forge?",
[40] = "Q: What shield allows you to drop down vertically at a quick speed?",
[41] = "Q: What shield allows the player the least amount of extra height?",
[42] = "Q: Which composer did NOT help compose the 'Introduction' theme?",
[43] = "Q: How many composers were involved in the 'Egg Rock Zone Act 2' theme?",
[44] = "Q: What is the name of the third NiGHTS Special Stage?",
[45] = "Q: What is the name of the first NiGHTS Special Stage?",
[46] = "Q: What is the name of the hidden eighth NiGHTS Special Stage?",
[47] = "Q: What is the name of the sixth NiGHTS Special Stage?",
[48] = "Q: What is the name of the second NiGHTS Special Stage?",
[49] = "Q: How many default sound effects in total are listed in 'Sound Test'?",
[50] = "Q: How many bonus and challenge stages overall are able to be unlocked?",
[51] = "null"
}
----------OLDC Exclusive questions






local Questions_OLDC = {
[0] = "Q: Which OLDC level features a giant penguin you can talk to?",
[1] = "Q: In the OLDC Hub, how many flowers are on each of the wall murals?",
[2] = "Q: What location number is the purple warp button in the OLDC Hub?",
[3] = "Q: How many levels, excluding 'Random' are near the OLDC Hub's escalator?",
[4] = "Q: Which of these four meals is NOT on the 'Brak Burger' Specials menu?",
[5] = "Q: Who works behind the counter at the 'Spleenik The Game 2 & Gift Shop'?",
[6] = "Q: What OLDC level is found in the 'Galactic Creamery' store?",
[7] = "Q: What is the name of the OLDC Hub store that features arcade cabinets?",
[8] = "Q: Who made the OLDC level 'Vermutlich ne Insel Zone'?",
[9] = "Q: What following OLDC levels do NOT feature a boss fight?",
[10] = "Q: What shape does the first stone path end at in Hanging Illusion Zone?",
[11] = "Q: What OLDC level is found in the 'Robo Racers' store?",
[12] = "Q: Which of the following OLDC levels is NOT a 'Circuit Mode' race?",
[13] = "Q: What number is the orange warp button in the OLDC Hub?",
[14] = "Q: How many authors are credited in 'Chemical Base Zone Act 1'?",
[15] = "Q: In Blue Mountain Zone, what gimmick is NOT used?",
[16] = "Q: What OLDC level is found in the Hub's movie theatre?",
[17] = "Q: In the Yolk Express store, what products are sold out?",
[18] = "Q: Who made the OLDC level 'Null Space'?",
[19] = "Q: Which location is NOT advertised in the 'Labyrinth Travels' store?",
[20] = "Q: Which meal is NOT featured on the 'Talez Randum Things' food menu?",
[21] = "Q: What OLDC level is the only level that features 'Mario Mode?'",
[22] = "Q: How many characters make cameos in 'Hexacolor Heaven' Zone?",
[23] = "Q: Who made the OLDC level 'Twilight Hill Zone Act 2'?",
[24] = "Q: In Rainy Foliage, what powerup is on the first left ring gate?",
[25] = "Q: What color is NOT featured in Blossoming Brushes Zone's map layout?",
[26] = "Q: What OLDC level uses the subtitle 'Upwards Movement'?",
[27] = "Q: Which of the following statements are true about the OLDC Hub?",
[28] = "Q: How many 'Character Swap' machines are in the OLDC Hub?",
[29] = "Q: What color are the walls in the Hub restrooms?",
[30] = "Q: What is the name of the store that 'Totem Tombolo' is found in?",
[31] = "Q: Who is credited for the music seen in 'Spleenik The Game Zone, Act 2'?",
[32] = "Q: What color are the eggman flags at 'Dr. Robotnik's Ring Wafers'?",
[33] = "Q: What button combination returns the player to the Main OLDC Hub?",
[34] = "Q: How many crawla statues are on each side of the OLDC Hub escalators?",
[35] = "Q: Which of the following statements about the OLDC collab are true?",
[36] = "Q: Where is the OLDC level named 'Zaxel's Temple Castle' located?",
[37] = "Q: How many 'Match Mode' maps are featured for this OLDC?",
[38] = "Q: What is the name of the store that 'Rainy Foilage' is found in?",
[39] = "Q: In the 'Talez Randum Things' store, who is NOT on 'Sonki History'?",
[40] = "Q: Which game is NOT advertised on 'The Blue Box' movie poster?",
[41] = "Q: Which official Sonic game appears as a poster in 'Robo Racers'?",
[42] = "Q: What OLDC level is found in the 'Brak's Burger' store?",
[43] = "Q: What is the weather like in 'Mount Majesty, Act 1'?",
[44] = "Q: What is the first level in this OLDC's Marathon Mode?",
[45] = "Q: Which movie poster in the HUB theatre is a movie reference?",
[46] = "Q: What collaboration is advertised in 'Vixuzen's Lum Store'?",
[47] = "Q: What color is the Crawla at 'Crawla's Consession Stand'?",
[48] = "Q: What OLDC level is found in the 'Dr. Robotnik's Ring Wafers' store?",
[49] = "Q: What do the levels placed on the fountains have in common?",
[50] = "Q: How many OLDC levels are there in total?",
[51] = "null"
}

		

local Answer = {
[1] = "2008",
[2] = "2009",
[3] = "2007",
[4] = "2006",

[5] = "Thok",
[6] = "Tohk",
[7] = "Thook",
[8] = "Thwok",

[9] = "Deep Sea Zone Act 1",
[10] = "Castle Eggman Zone Act 1",
[11] = "Deep Sea Zone Act 2",
[12] = "Techno Hill Zone Act 3",

[13] = "Light Blue",
[14] = "Red",
[15] = "Blue",
[16] = "Orange",

[17] = "Amy",
[18] = "Tails",
[19] = "Knuckles",
[20] = "Metal Sonic",

[21] = "Wile E. Coyote",
[22] = "Bugs Bunny",
[23] = "Tom and Jerry",
[24] = "Yosemite Sam",

[25] = "MAP 23",
[26] = "MAP 19",
[27] = "MAP 21",
[28] = "MAP 17",

[29] = "3",
[30] = "1",
[31] = "2",
[32] = "4",

[33] = "40",
[34] = "30",
[35] = "20",
[36] = "50",

[37] = "200",
[38] = "180",
[39] = "160",
[40] = "220",

[41] = "Game Completion",
[42] = "Unlock Metal Sonic",
[43] = "20 emblems",
[44] = "40 emblems",

[45] = "Black Core Zone",
[46] = "Black Hole Zone",
[47] = "Egg Rock Zone",
[48] = "Doomsday Zone",

[49] = "4",
[50] = "3",
[51] = "5",
[52] = "6",

[53] = "Orange",
[54] = "Yellow",
[55] = "Red",
[56] = "White",

[57] = "5",
[58] = "4",
[59] = "3",
[60] = "6",

[61] = "10",
[62] = "8",
[63] = "6",
[64] = "12",

[65] = "Spins from a holographic teleporter",
[66] = "Emerges from a box of metal parts",
[67] = "Turns from a badnik into true form",
[68] = "(None of these answers)",

[69] = "Techno Hill Zone",
[70] = "Greenflower Zone",
[71] = "Deep Sea Zone",
[72] = "Arid Canyon Zone",

[73] = "Dual Fortress",
[74] = "Clockwork Towers",
[75] = "Twisted Terminal",
[76] = "Icicle Falls",

[77] = "Christmas Chime",
[78] = "Frozen Hillside",
[79] = "Haunted Heights",
[80] = "Floral Fields",

[81] = "Baphomoar",
[82] = "Maphoboar",
[83] = "Bamophoar",
[84] = "Ramoboar",

[85] = "180",
[86] = "150",
[87] = "175",
[88] = "200",

[89] = "Gold",
[90] = "Blue",
[91] = "Red",
[92] = "Silver",

[93] = "1998",
[94] = "2000",
[95] = "1999",
[96] = "1997",

[97] = "12",
[98] = "10",
[99] = "14",
[100] = "8",

[101] = "Backspace",
[102] = "Esc",
[103] = "Enter",
[104] = "Delete",

[105] = "Manual",
[106] = "Strafe",
[107] = "Automatic",
[108] = "(None of these answers)",

[109] = "12 o'clock",
[110] = "3 o'clock",
[111] = "6 o'clock",
[112] = "9 o'clock",

[113] = "Sonic the Hedgehog OVA",
[114] = "Sonic the Fighters",
[115] = "Sonic Triple Trouble",
[116] = "Sonic Robo Blast 2",

[117] = "Sapphire Hills",
[118] = "Lime Forest",
[119] = "Jade Valley",
[120] = "Meadow Match",

[121] = "Lance-a-Bot",
[122] = "Robo-Hood",
[123] = "Egg Guard",
[124] = "Crawla Commander",

[125] = "Dragonbomber",
[126] = "Bird Aircraft Strike",
[127] = "Pophat",
[128] = "Jetty-Syn Bomber",

[129] = "Drill",
[130] = "Quick Spin",
[131] = "Flight Dash",
[132] = "Twirl",

[133] = "Red Volcano Zone Act 1",
[134] = "Arid Canyon Zone Act 2",
[135] = "Techno Hill Zone Act 1",
[136] = "Castle Eggman Zone Act 1",

[137] = "Armageddon Shield",
[138] = "Extra Life",
[139] = "Water Shield",
[140] = "Invincible Shield",

[141] = "2.2",
[142] = "2.1",
[143] = "2.0",
[144] = "2.2.1",

[145] = "DOOM",
[146] = "Blender",
[147] = "Quake",
[148] = "Unity",

[149] = "Sonic CD",
[150] = "Sonic Adventure",
[151] = "Sonic the Hedgehog 3",
[152] = "Sonic the Hedgehog OVA",

[153] = "Sonic Triple Trouble",
[154] = "Sonic the Fighters",
[155] = "Sonic Mania",
[156] = "Sonic CD",

[157] = "Lady Fortune",
[158] = "Lady Fairy",
[159] = "Lady Luck",
[160] = "Lady Fortuna",

[161] = "Elemental Shield",
[162] = "Force Shield",
[163] = "Flame Shield",
[164] = "Whirlwind Shield",

[165] = "Attraction Shield",
[166] = "Whirlwind Shield",
[167] = "Water Shield",
[168] = "Lightning Shield",

[169] = "Clairebun",
[170] = "SSNTails",
[171] = "RedXVI",
[172] = "(All three helped compose)",

[173] = "3",
[174] = "2",
[175] = "4",
[176] = "1",

[177] = "Flooded Cove",
[178] = "Flooded Caves",
[179] = "Flooded Coast",
[180] = "Flooded Crest",

[181] = "Floral Fields",
[182] = "Flowery Fields",
[183] = "Fantasy Fields",
[184] = "Floric Fields",

[185] = "Black Hole Zone",
[186] = "Black Core Zone",
[187] = "Black Void Zone",
[188] = "Black Star Zone",

[189] = "Magma Caves",
[190] = "Molten Caves",
[191] = "Magma Chasm",
[192] = "Molten Chasm",

[193] = "193",
[194] = "194",
[195] = "195",
[196] = "196",

[197] = "197",
[198] = "198",
[199] = "199",
[200] = "200",

---------------OLDC ANSWERS
[201] = "Totem Tombolo Zone",
[202] = "Arctic Summit Zone",
[203] = "Blue Mountain Zone",
[204] = "Zaxel's Garden Zone",

[205] = "3",
[206] = "2",
[207] = "4",
[208] = "5",

[209] = "5",
[210] = "2",
[211] = "4",
[212] = "3",

[213] = "(None of these answers)",
[214] = "1",
[215] = "2",
[216] = "One, but it's hidden",

[217] = "The Big Onion",
[218] = "Big Brak Burger",
[219] = "Dr. Robotnik Bacon Burger",
[220] = "Deton Meatball Sub",

[221] = "Eemy",
[222] = "Taileels",
[223] = "Spleenik",
[224] = "Roobatnik",

[225] = "Mount Majesty Zone, Act 1",
[226] = "Twilight Hill Zone, Act 2",
[227] = "Arctic Summit Zone",
[228] = "Temple Trek Zone",

[229] = "Sega Hi-Tech Land",
[230] = "Vixuzen's Lum Store",
[231] = "Robo Racers",
[232] = "Dr Robotnik's Ring Wafers",

[233] = "Bewinus",
[234] = "RedBun",
[235] = "Pallaris",
[236] = "Mavrik",

[237] = "Doomship Zone, Act 2",
[238] = "Egg Rocket Zone",
[239] = "Circuit Rush Zone, Act 2",
[240] = "The NiGHTMARE",

[241] = "Spiral",
[242] = "Circle",
[243] = "Zig-Zag",
[244] = "Triangle",

[245] = "Toxic Citadel Remake Zone",
[246] = "Circuit Rush Zone, Act 1",
[247] = "Mega Genesis Zone",
[248] = "Sapphire Twilight Zone",

[249] = "Mega Genesis Zone",
[250] = "Rainy Foliage Zone",
[251] = "Toxic Citadel Remake Zone",
[252] = "Winter Run Zone",

[253] = "2",
[254] = "4",
[255] = "1",
[256] = "3",

[257] = "3",
[258] = "2",
[259] = "4",
[260] = "1",

[261] = "Falling Icicles",
[262] = "Rolling Rock",
[263] = "Avalanches",
[264] = "Pterabytes",

[265] = "(None of these answers)",
[266] = "Palace of NiGHTS",
[267] = "Fortune Forge Zone",
[268] = "Spleenik The Game, Act 2",

[269] = "Fan Fingers",
[270] = "Cool Clothes",
[271] = "Action Figures",
[272] = "Video Games",

[273] = "Bypigs2",
[274] = "Voidy2246",
[275] = "StarManiaKG",
[276] = "Hejod",

[277] = "Holoska",
[278] = "Apotos",
[279] = "Mystic Ruins",
[280] = "Mazuri",

[281] = "Sonki's Punchpie",
[282] = "Sonki's Blue Cheese Mac",
[283] = "Conkler's Cheese Curds",
[284] = "Talez Burger",

[285] = "Hanging Illusion Zone",
[286] = "Omelette Farms Zone",
[287] = "Temple Trek Zone",
[288] = "Ground Veil Z Zone",

[289] = "13",
[290] = "12",
[291] = "14",
[292] = "15",

[293] = "csean07 xKorix",
[294] = "Vixuzen",
[295] = "Seaballer",
[296] = "Mr.FondusBroMan",

[297] = "Pity Shield",
[298] = "Whirlwind Shield",
[299] = "Speed Shoes",
[300] = "Electric Shield",

[301] = "Green",
[302] = "Red",
[303] = "Pink",
[304] = "Lavender",

[305] = "Snowy Skies, Act 2",
[306] = "Twilight Hill Zone, Act 2",
[307] = "Hexacolor Heaven Zone",
[308] = "Magma Mountain Zone, Act 1",

[309] = "(The center lobby food is edible.)",
[310] = "(There are no chaos emeralds.)",
[311] = "(There are hidden levels.)",
[312] = "(Leaving the Hub exits to the menu.)",

[313] = "6",
[314] = "8",
[315] = "5",
[316] = "7",

[317] = "Red",
[318] = "White",
[319] = "Blue",
[320] = "Orange",

[321] = "(None of these answers)",
[322] = "Brak's Burgers",
[323] = "Dr. Robotnik's Ring Wafers",
[324] = "Sega Hi-Tech Land",

[325] = "Chrissy 'CILC'",
[326] = "Neon",
[327] = "Dashdahog",
[328] = "Tatsuru",

[329] = "Black",
[330] = "White",
[331] = "Red",
[332] = "Green",

[333] = "Tab + Spin",
[334] = "Esc + Spin",
[335] = "Tab + Pause",
[336] = "Esc + Pause",

[337] = "3",
[338] = "2",
[339] = "4",
[340] = "1",

[341] = "(Black Eggman is in a level.)",
[342] = "(Metal Sonic is NOT in a level.)",
[343] = "(There is an emerald hunting level.)",
[344] = "(This OLDC does NOT include custom skincolors.)",

[345] = "(None of these answers)",
[346] = "Labyrinth Travels",
[347] = "(Located on a water fountain)",
[348] = "SBAJ games and stuff",

[349] = "1",
[350] = "2",
[351] = "3",
[352] = "None",

[353] = "SBAJ games and stuff",
[354] = "Vixuzen's Lum Store",
[355] = "Talez Randum Things",
[356] = "(None of these answers)",

[357] = "FNP Sonki Crossover",
[358] = "Legacy Talez",
[359] = "Legacy Sonki",
[360] = "FNP Talez Crossover",

[361] = "Marcy's Madness",
[362] = "Carbon Isles",
[363] = "Half Alive",
[364] = "Project Mirror",

[365] = "Sonic Drift",
[366] = "Sonic Triple Trouble",
[367] = "Sonic Robo Blast 2",
[368] = "Sonic the Hedgehog 2",

[369] = "(None of these answers)",
[370] = "Zaxel's Garden Zone",
[371] = "Vermutlich ne Insel",
[372] = "Metallic City Zone",

[373] = "Snowy",
[374] = "Rainy",
[375] = "Sunny",
[376] = "Foggy",

[377] = "Color Void Chasm",
[378] = "Circuit Rush Zone, Act 1",
[379] = "Egg Rocket Zone, Act 1",
[380] = "Zaxel's Garden Zone",

[381] = "elf",
[382] = "crawla 2",
[383] = "SRB2 Direct",
[384] = "Corn",

[385] = "Unofficial Level Design Collab Ultimate",
[386] = "Unofficial Level Design Collab 2024",
[387] = "Official Level Design Collab Ultimate",
[388] = "Official Level Design Collab 2024",

[389] = "Green",
[390] = "Yellow",
[391] = "Gray",
[392] = "Orange",

[393] = "Metallic City Zone",
[394] = "Ground Veil Z Zone",
[395] = "Omelette Farms",
[396] = "Blossoming Brushes Zone",

[397] = "(Two levels from both authors.)",
[398] = "(Colors for both rooms are the same.)",
[399] = "(Same level themes.)",
[400] = "(Same portal heights.)",

[401] = "31",
[402] = "30",
[403] = "32",
[404] = "33",

[405] = "nil"
}
		if player.questionoption == nil
			player.questionoption = 0
			player.questionsOLDC = 0
		return end
		

		
		local answerchoice1 = Answer[player.questionnum*4 +1 +player.questionsOLDC_lump]
		local answerchoice2 = Answer[player.questionnum*4 +2 +player.questionsOLDC_lump]
		local answerchoice3 = Answer[player.questionnum*4 +3 +player.questionsOLDC_lump]
		local answerchoice4 = Answer[player.questionnum*4 +4 +player.questionsOLDC_lump]
		
		
		v.drawScaled(128, 0, 1*FRACUNIT, v.cachePatch("QUIZHUD"),V_HUDTRANS*3/2|V_SNAPTOBOTTOM)		
	
		
		--v.drawString(128, 125+(player.questionoptionlist*2),"CORRECT............."+player.questionoption+1,V_HUDTRANS|V_SNAPTOLEFT|V_SNAPTOBOTTOM|V_GREENMAP,vidflag28342)

		

				
		if player.questionsOLDC <= 1
			v.drawString(vidflag029345_x, vidflag029345_y-120*FRACUNIT,Questions[player.questionnum],V_HUDTRANS|vidflag385236|V_ALLOWLOWERCASE,"thin-fixed-center")
		end
		
		if player.questionsOLDC > 1
			v.drawString(vidflag029345_x, vidflag029345_y-120*FRACUNIT,Questions_OLDC[player.questionnum],V_HUDTRANS|vidflag385236|V_YELLOWMAP|V_ALLOWLOWERCASE,"thin-fixed-center")
		end
		
		v.drawString(vidflag029345_x, vidflag029345_y-150*FRACUNIT,"Time",V_HUDTRANS|vidflag385236,"fixed-center")
		v.drawString(vidflag029345_x, vidflag029345_y-140*FRACUNIT,player.questiontimer/36,V_HUDTRANS|vidflag385236|V_MAGENTAMAP,"fixed-center")
		
		if player.questiontimer <= 36*6
			v.drawString(vidflag029345_x, vidflag029345_y-150*FRACUNIT,"Time",V_HUDTRANS|vidflag385236|V_YELLOWMAP,"fixed-center")
			v.drawString(vidflag029345_x, vidflag029345_y-140*FRACUNIT,player.questiontimer/36,V_HUDTRANS|vidflag385236|V_REDMAP,"fixed-center")
		
			v.drawString(vidflag029345_x, vidflag029345_y-150*FRACUNIT,"Time",player.mo.hudflash<<V_ALPHASHIFT|vidflag385236,"fixed-center")
			v.drawString(vidflag029345_x, vidflag029345_y-140*FRACUNIT,player.questiontimer/36,player.mo.hudflash<<V_ALPHASHIFT|vidflag385236,"fixed-center")
		
		
		end
		
		if player.questionoption <= 0
			v.drawString(vidflag029345_x, vidflag029345_y-100*FRACUNIT,"A) "+answerchoice1,V_HUDTRANS|vidflag385236|V_ROSYMAP,vidflag283475)
			v.drawString(vidflag029345_x, vidflag029345_y-90*FRACUNIT,"B) "+answerchoice2,V_HUDTRANS|vidflag385236|V_AQUAMAP,vidflag283475) --V_AQUAMAP
			v.drawString(vidflag029345_x, vidflag029345_y-80*FRACUNIT,"C) "+answerchoice3,V_HUDTRANS|vidflag385236|V_PERIDOTMAP,vidflag283475) --V_PERIDOTMAP
			v.drawString(vidflag029345_x, vidflag029345_y-70*FRACUNIT,"D) "+answerchoice4,V_HUDTRANS|vidflag385236|V_YELLOWMAP,vidflag283475)
		return end
		if player.questionoption == 1
			v.drawString(vidflag029345_x, vidflag029345_y-100*FRACUNIT,"A) "+answerchoice4,V_HUDTRANS|vidflag385236|V_ROSYMAP,vidflag283475)
			v.drawString(vidflag029345_x, vidflag029345_y-90*FRACUNIT,"B) "+answerchoice1,V_HUDTRANS|vidflag385236|V_AQUAMAP,vidflag283475)
			v.drawString(vidflag029345_x, vidflag029345_y-80*FRACUNIT,"C) "+answerchoice2,V_HUDTRANS|vidflag385236|V_PERIDOTMAP,vidflag283475)
			v.drawString(vidflag029345_x, vidflag029345_y-70*FRACUNIT,"D) "+answerchoice3,V_HUDTRANS|vidflag385236|V_YELLOWMAP,vidflag283475)
		return end
		if player.questionoption == 2
			v.drawString(vidflag029345_x, vidflag029345_y-100*FRACUNIT,"A) "+answerchoice3,V_HUDTRANS|vidflag385236|V_ROSYMAP,vidflag283475)
			v.drawString(vidflag029345_x, vidflag029345_y-90*FRACUNIT,"B) "+answerchoice4,V_HUDTRANS|vidflag385236|V_AQUAMAP,vidflag283475)
			v.drawString(vidflag029345_x, vidflag029345_y-80*FRACUNIT,"C) "+answerchoice1,V_HUDTRANS|vidflag385236|V_PERIDOTMAP,vidflag283475)
			v.drawString(vidflag029345_x, vidflag029345_y-70*FRACUNIT,"D) "+answerchoice2,V_HUDTRANS|vidflag385236|V_YELLOWMAP,vidflag283475)
		return end
		if player.questionoption >= 3
			v.drawString(vidflag029345_x, vidflag029345_y-100*FRACUNIT,"A) "+answerchoice2,V_HUDTRANS|vidflag385236|V_ROSYMAP,vidflag283475)
			v.drawString(vidflag029345_x, vidflag029345_y-90*FRACUNIT,"B) "+answerchoice3,V_HUDTRANS|vidflag385236|V_AQUAMAP,vidflag283475)
			v.drawString(vidflag029345_x, vidflag029345_y-80*FRACUNIT,"C) "+answerchoice4,V_HUDTRANS|vidflag385236|V_PERIDOTMAP,vidflag283475)
			v.drawString(vidflag029345_x, vidflag029345_y-70*FRACUNIT,"D) "+answerchoice1,V_HUDTRANS|vidflag385236|V_YELLOWMAP,vidflag283475)
		return end
		
	end
end
hud.add(quizgame)

--There's almost no order to these, just pray it works
local function dirhud(v, player, camera)
	if gamemap != 779 --showmap
	or player.split == true
	return end
	
	--local camaim1 = tonumber(camera.angle)>>16
	local camaim2 = tonumber(camera.angle/FRACUNIT*1024)
	local camaim3 = tonumber(camera.aiming/FRACUNIT*1024)

	
	--LEVEL END/QUIZ ROOM
	if camera.x < -23500*FRACUNIT
	and camera.y < -23500*FRACUNIT
	return end
	
	--ENTRANCE
	if camera.y < -27000*FRACUNIT
	and camera.x > -4500*FRACUNIT
		v.drawString(-100*FRACUNIT+camaim2, 60*FRACUNIT+camaim3,"Entrance",V_HUDTRANS/2|V_SNAPTOBOTTOM|V_ALLOWLOWERCASE,"thin-fixed-center")
	end	
	
	

	--STATUE (lower left)
	if camera.x < -17000*FRACUNIT
	and camera.y < -18800*FRACUNIT
		v.drawString(400*FRACUNIT+camaim2*2+(14000*FRACUNIT-player.mo.y)/50, 0*FRACUNIT+camaim3+(player.mo.z/20),"Statue",V_HUDTRANS/2|V_SNAPTOBOTTOM|V_ALLOWLOWERCASE,"thin-fixed-center")
	end	
	--STATUE (upper left)
	if camera.x < -17000*FRACUNIT
	and camera.y > -17600*FRACUNIT
		v.drawString(0*FRACUNIT+camaim2*2+(14000*FRACUNIT-player.mo.y)/50, 0*FRACUNIT+camaim3+(player.mo.z/20),"Statue",V_HUDTRANS/2|V_SNAPTOBOTTOM|V_ALLOWLOWERCASE,"thin-fixed-center")
	end	
	--STATUE (lower right)
	if camera.x > -17000*FRACUNIT
	and camera.y < -18800*FRACUNIT
		v.drawString(-200*FRACUNIT+camaim2*2+(14000*FRACUNIT-player.mo.y)/50, 0*FRACUNIT+camaim3+(player.mo.z/20),"Statue",V_HUDTRANS/2|V_SNAPTOBOTTOM|V_ALLOWLOWERCASE,"thin-fixed-center")
	end	
	--STATUE (upper right)
	if camera.x > -17000*FRACUNIT
	and camera.y > -17600*FRACUNIT
		v.drawString(200*FRACUNIT+camaim2*2+(14000*FRACUNIT-player.mo.y)/50, 0*FRACUNIT+camaim3+(player.mo.z/20),"Statue",V_HUDTRANS/2|V_SNAPTOBOTTOM|V_ALLOWLOWERCASE,"thin-fixed-center")
	end		
	

	--QUIZ (lower left)
	if camera.x < -13000*FRACUNIT
	and camera.y < -24000*FRACUNIT
		v.drawString(-100*FRACUNIT+camaim2*2+(-19000*FRACUNIT-player.mo.y)/50, -100*FRACUNIT+camaim3+(player.mo.z/20),"Quiz",V_HUDTRANS/2|V_SNAPTOBOTTOM|V_ALLOWLOWERCASE,"thin-fixed-center")
	end	
	--QUIZ (lower right)
	if camera.x > -11500*FRACUNIT
	and camera.y < -24000*FRACUNIT
		v.drawString(-100*FRACUNIT+camaim2*2+(9000*FRACUNIT-player.mo.y)/50, -100*FRACUNIT+camaim3+(player.mo.z/20),"Quiz",V_HUDTRANS/2|V_SNAPTOBOTTOM|V_ALLOWLOWERCASE,"thin-fixed-center")
	end	
	--QUIZ (upper left)
	if camera.x < -13000*FRACUNIT
	and camera.y > -24000*FRACUNIT
		v.drawString(0*FRACUNIT+camaim2*2+(11000*FRACUNIT-player.mo.y)/50, -100*FRACUNIT+camaim3+(player.mo.z/20),"Quiz",V_HUDTRANS/2|V_SNAPTOBOTTOM|V_ALLOWLOWERCASE,"thin-fixed-center")
	end	
	--QUIZ (upper right)
	if camera.x > -11500*FRACUNIT
	and camera.y > -21500*FRACUNIT
		v.drawString(200*FRACUNIT+camaim2*2+(11000*FRACUNIT-player.mo.y)/50, -100*FRACUNIT+camaim3+(player.mo.z/20),"Quiz",V_HUDTRANS/2|V_SNAPTOBOTTOM|V_ALLOWLOWERCASE,"thin-fixed-center")
	end		
end
hud.add(dirhud)